假设我有collectionA
和collection B
。我的查询如下:
db.A.aggregate([
{
$lookup: {
from: "B",
localField: "_id",
foreignField: "custom_id",
as: "B"
}
},
{
$match: {
"B.anotherId": "A.anotherId" // not working, is it possible?
}
])
我很好奇,是否有可能做自己想做的事情$match
。目的是仅获取A和B文档中具有相同“ anotherId”值的文档。支持吗?如果是的话,该怎么做?
您可以将$ lookup与聚合管道一起使用,
let
定义你的这两个领域,并在检查表达条件$match
和$and
db.A.aggregate([
{
$lookup: {
from: "B",
let: {
custom_id: "$_id",
anotherId: "$anotherId
},
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ["$$custom_id", "$custom_id"] },
{ $eq: ["$$anotherId", "$anotherId"] }
]
}
}
}
],
as: "B"
}
}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句