【发布时间】:2018-06-23 22:02:21
【问题描述】:
如何在 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从库存集合中获取reocrd,然后从订单集合中匹配记录。但如果在订单收集上不匹配,它将至少给出库存记录。
我的代码-:
db.inventory.aggregate([
{
$lookup:
{
from: 'orders',
localField: 'coin_id',
foreignField: 'coin_id',
as: 'coin_details'
}
}, {$match : {'coin_details.user_id':'11')}}
每当 user_id 为空或不可用时,我总是想从库存记录中记录 如果有任何其他可能性,请告诉我。请指导我如何做。
【问题讨论】:
-
更改或删除
$match阶段。它过滤掉没有匹配顺序的记录。 -
但我想要这个比较。因为我想要根据 user_id 的值。如果集合中不存在,则可以,但如果存在,则我想要。
-
当然,但是您当前版本中的
$match说“只保留user_id 为11 的记录”。没有任何“如果它不存在”。更改“$match”以满足您的要求。 -
谢谢,你能指导我在这个阶段如何可能吗?