gpt4 book ai didi

node.js - mongodb如何加入集合

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:26 24 4
gpt4 key购买 nike

如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com