mongodb lookup 使用请教

2023-01-13 11:02:51 +08:00
 slomo

请教如何 join data

问题描述

现在有两个 document, order 和 product. 数据分别如下

// order
{
	"id": 1,
    "name": "我的订单",
    "products": [
    	{
    		"productId": 1,
        	"num": 2
    	},
        {
    		"productId": 2,
        	"num": 1
    	}
    ]
}
// product
{
	"id": 1,
    "name": "测试商品",
    "price": 10.0
}
{
	"id": 2,
    "name": "正式商品",
    "price": 18.8
}

如果我想得到下面这样的数据结构, 应该怎么写查询呢

{
	"_id": 1,
	"name": "我的订单",
    "products": [
    	{
    		"productId": 1,
        	"num": 2,
        	"product": {
	        	"id": 1,
    			"name": "测试商品",
                	"price": 10.0
        	}
    	},
        {
    		"productId": 2,
        	"num": 1,
        	"product": {
	        	"id": 2,
    			"name": "正式商品",
                	"price": 18.8
        	}
    	}
    ]
}
1602 次点击
所在节点    MongoDB
4 条回复
Moyyyyyyyyyyye
2023-01-13 12:10:27 +08:00
{
from: "product",
localField: "products.productId",
foreignField: "id",
as: "productDetail"
}
slomo
2023-01-13 14:30:35 +08:00
@Moyyyyyyyyyyye thx, 不过这个只能在最外层再新建一个 productDetail 列表, 查出来不是我想要的这种结构
lzgshsj
2023-01-13 16:58:07 +08:00
一楼的
as: "productDetail"
换成
as: "products.product"
slomo
2023-01-14 16:35:25 +08:00
@lzgshsj 这个也试过了,会覆盖掉原本的 products 列表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908635

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX