node.js - mongodb如何加入集合

标签 node.js mongodb mongoose

如何在 mongo db 3.2 中以联接完整外部方式获取记录

库存收集

db.inventory.insert([
{ "_id" : 1, "coin_id" : "12345", description: "product 1"},
{ "_id" : 2, "coin_id" : "12346", description: "product 2"},
])

订单收集

db.orders.insert([
{ "_id" : 1, "coin_id" : "12345", "user_id" : 11, "bal" :1000 },
])

这里的场景就是这样。我想根据 coin_id 从库存集合中获取记录,然后从订单集合中匹配记录。但如果订单收款时不匹配,至少会给出库存记录。

我的代码-:

db.inventory.aggregate([
{
    $lookup:
    {
       from: 'orders',
       localField: 'coin_id',
       foreignField: 'coin_id',
       as: 'coin_details'
    }
},  {$match : {'coin_details.user_id':'11')}}

每当 user_id 为空或不可用时,我总是希望从库存记录中进行记录 如果有任何其他可能性,请告诉我。请指导我该怎么做。

最佳答案

应更改 $match 条件以满足“匹配用户 ID,或无匹配订单”的要求:

db.inventory.aggregate([
    { 
        $lookup:
        {
            from: 'orders',
            localField: 'coin_id',
            foreignField: 'coin_id',
            as: 'coin_details'
        }
    },  
    { $match : {$or: [
        {'coin_details.user_id':11}, 
        {'coin_details':{$size:0}}
    ] } }
] )

顺便说明一下,user_id 是示例文档中的一个数字,因此它应该出现在查询中。

关于node.js - mongodb如何加入集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260183/

相关文章:

node.js - 如何在Mongodb(Mongoose)中获取html字段数据?

javascript - node.js 语法错误 : Unexpected token { in Version v0. 10.43

javascript - 我们如何使用生成器以同步方式编写异步代码?

javascript - 什么是 MongoDB 的严格模式,使用它是个好主意吗?

linux - 在 Linux RHEL 6.7 上安装没有 YUM 的 MongoDB

c# - 无法使用接口(interface)确定 i => i.Id 的序列化信息

javascript - 如何在 mxgraph 中固定拖动步骤

java - Grails:如何使用 MongoDB 进行数据库迁移?

node.js - 如何自动刷新 MEAN 堆栈中所有导入数据的列表。 Nodejs+Mongodb+Openshift

javascript - Mongoose 检查集合是否存在