MongoDB。 Select 个字段存在于其他集合中
MongoDB. Select fields existing in other cillection
我有两个 collection。我需要根据字段值存在于第二个 collection 的条件从第一个 select 文档。例如:
User_Item collection 有如下文件
{
'_id' ...,
'uid' : 123,
'iid' : 'a123',
'quantity' : 10
}
第二个 collection 包含如下项目
{
'_id' ...,
'iid' : 'a456',
'name' : 'someItem'
}
我需要通过在两个 collection 中重合的项目 ID ('iid') 获取样本。呈现了预期的结果。
{
'_id' : ...,
'uid' : 123,
'iid': 'a123',
'name' : 'item123'
}
我在项目的 user_items 中使用了 $lookup,但它 return 包含第一个 collection 中的每个文档,并且有很多空数组。我想避免它。
如果在 user_items 的项目中进行 $lookup,它将 return 一组用户。这也不是想要的结果。
查找中是否有一些选项,或者可能是此问题的另一种解决方案?
您可以使用以下聚合
db.User_Item.aggregate([
{ "$lookup": {
"from": "second",
"localField": "iid",
"foreignField": "iid",
"as": "second"
}},
{ "$match": { "second": { "$ne": [] }}},
{ "$addFields": {
"name": { "$arrayElemAt": ["$second.name", 0] }
}},
{ "$project": { "second": 0 }}
])
我有两个 collection。我需要根据字段值存在于第二个 collection 的条件从第一个 select 文档。例如:
User_Item collection 有如下文件
{
'_id' ...,
'uid' : 123,
'iid' : 'a123',
'quantity' : 10
}
第二个 collection 包含如下项目
{
'_id' ...,
'iid' : 'a456',
'name' : 'someItem'
}
我需要通过在两个 collection 中重合的项目 ID ('iid') 获取样本。呈现了预期的结果。
{
'_id' : ...,
'uid' : 123,
'iid': 'a123',
'name' : 'item123'
}
我在项目的 user_items 中使用了 $lookup,但它 return 包含第一个 collection 中的每个文档,并且有很多空数组。我想避免它。
如果在 user_items 的项目中进行 $lookup,它将 return 一组用户。这也不是想要的结果。
查找中是否有一些选项,或者可能是此问题的另一种解决方案?
您可以使用以下聚合
db.User_Item.aggregate([
{ "$lookup": {
"from": "second",
"localField": "iid",
"foreignField": "iid",
"as": "second"
}},
{ "$match": { "second": { "$ne": [] }}},
{ "$addFields": {
"name": { "$arrayElemAt": ["$second.name", 0] }
}},
{ "$project": { "second": 0 }}
])