如何使用节点js在mongodb中映射两个集合[重复]

Posted

技术标签:

【中文标题】如何使用节点js在mongodb中映射两个集合[重复]【英文标题】:How to map two collections in mongodb using node js [duplicate] 【发布时间】:2019-10-21 13:32:39 【问题描述】:

我怀疑如何使用 mongoclient 在 mongodb 中映射两个集合。我试过了,但它不起作用。如何解决它

group_promotion 收藏

 
    "_id" : ObjectId("5cf7679a0b0bed2e7483b998"), 
    "group_name" : "Latest", 
    "products" : [ObjectId("5cecc161e8c1e73478956333"),ObjectId("5cecc161e8c1e73478956334")]  


产品系列

 
    "_id" : ObjectId("5cecc161e8c1e73478956333"), 
    "product_name" : "bourbon"
,
 
    "_id" : ObjectId("5cecc161e8c1e73478956334"), 
    "product_name" : "bour"

预期输出:

   
    "_id" : ObjectId("5cf7679a0b0bed2e7483b998"),   
    "group_name" : "Latest",   
    "products" : [   
    "_id" : ObjectId("5cecc161e8c1e73478956333"),   
    "product_name" : "bourbon"  
    ,
   "_id" : ObjectId("5cecc161e8c1e73478956334"),   
    "product_name" : "bour"  
   ]    
  

【问题讨论】:

【参考方案1】:

您可以直接在products 数组上运行$lookup 以获得预期结果:

db.group_promotion.aggregate([
    
        $lookup: 
            from: "product",
            localField: "products",
            foreignField: "_id",
            as: "products"
        
    
])

这将从数组中获取products,在products集合中找到对应的文档,并覆盖group_production中现有的products数组

【讨论】:

@micki 但我对这种情况还有一个疑问,请您看看团体促销合集和产品合集。 @HariSmith 你打开了另一个问题吗? @micki 不,我已经改变了我的问题,你可以看看团体促销集合和产品集合这个场景如何实现映射两个集合 @micki 对不起,我编辑数据有误。我会更正和更新它。你能告诉我这个场景如何实现它。 @micki 感谢您的解决方案,它工作正常。

以上是关于如何使用节点js在mongodb中映射两个集合[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在节点js中将变量名作为mongodb的集合名称传递

如何在节点 js 和 mongodb 中使用填充的字段键值名称进行搜索?

如何从 mongodb 获取数据并使用节点 js 将其显示在表中?

MongoDB学习笔记——Master/Slave主从复制

更新 MongoDB 节点 Js 中的整个集合

如何在猫鼬和节点js中的同一记录上填充两个集合