slomo
V2EX  ›  MongoDB

mongodb lookup 使用请教

By slomo at 2023 年 1 月 13 日 · 2770 次点击

请教如何 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
        	}
    	}
    ]
}
4 条回复  •  2023-01-14 16:35:25 +08:00
Moyyyyyyyyyyye
   1
Moyyyyyyyyyyye  
   2023 年 1 月 13 日
{
from: "product",
localField: "products.productId",
foreignField: "id",
as: "productDetail"
}
slomo
   2
slomo  
OP
   2023 年 1 月 13 日
@Moyyyyyyyyyyye thx, 不过这个只能在最外层再新建一个 productDetail 列表, 查出来不是我想要的这种结构
hakuya7
   3
hakuya7  
   2023 年 1 月 13 日
一楼的
as: "productDetail"
换成
as: "products.product"
slomo
   4
slomo  
OP
   2023 年 1 月 14 日 via iPad
@lzgshsj 这个也试过了,会覆盖掉原本的 products 列表
推荐工具
› RoboMongo
推荐书目
› 50 Tips and Tricks for MongoDB Developers
Related Blogs
› Snail in a Turtleneck
© 2026 V2EX · 26ms · 3.9.8.5