考虑包含另一个集合的ID数组的文档,我如何使用猫鼬找到基于相关集合应用过滤器的文档? 我找不到我的错误
Installation.aggregate(
[
// Stage 1
{
$lookup: {
from: "users",
localField: "_id",
foreignField: "_id",
as: "Users"
}
},
// Stage 2
{
$unwind: {
path: "$Users"
}
},
// Stage 3
{
$match:
{"Users.Email1" : "test@test.com"}
},
{
$sort: { _id: -1 }
},
{
$limit: 10
}
]
,function (err, installations) {
console.log(installations); //<<<<< Empty
/*
Installation.populate( 'Parent', '_id Email1','Company'), function(err,results) {
Installation.count(filter).exec(function (err, count) {
res.send({ success: true, results: installations, total: count });
});
};
*/
});
预先感谢 安德里亚
答案 0 :(得分:2)
您可以使用汇总查询来做到这一点:
db.collectionA.aggregate(
// Pipeline
[
// Stage 1
{
$lookup: {
from: "collectionB",
localField: "_id",
foreignField: "_id",
as: "collectionBData"
}
},
// Stage 2
{
$unwind: {
path : "$collectionBData"
}
},
// Stage 3
{
$match: {
"collectionBData.email": "your@email.address"
}
},
]
);
希望这可以解决您的查询。
此外,在Mongo中,我们使用命名约定作为集合而不是表,并使用 _id代替id 。