V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
slomo
V2EX  ›  MongoDB

mongodb lookup 使用请教

  •  
  •   slomo · 2023-01-13 11:02:51 +08:00 · 1584 次点击
    这是一个创建于 688 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教如何 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-01-13 12:10:27 +08:00
    {
    from: "product",
    localField: "products.productId",
    foreignField: "id",
    as: "productDetail"
    }
    slomo
        2
    slomo  
    OP
       2023-01-13 14:30:35 +08:00
    @Moyyyyyyyyyyye thx, 不过这个只能在最外层再新建一个 productDetail 列表, 查出来不是我想要的这种结构
    lzgshsj
        3
    lzgshsj  
       2023-01-13 16:58:07 +08:00
    一楼的
    as: "productDetail"
    换成
    as: "products.product"
    slomo
        4
    slomo  
    OP
       2023-01-14 16:35:25 +08:00 via iPad
    @lzgshsj 这个也试过了,会覆盖掉原本的 products 列表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2659 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 04:02 · PVG 12:02 · LAX 20:02 · JFK 23:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.