【发布时间】:2020-08-07 13:59:39
【问题描述】:
我需要你的帮助。我在我的两个集合上使用过滤器练习非常简单的连接方法。它可以在没有过滤器的情况下工作。 下面提到了我的 mongodb 查询。
两个合集
第一次收藏
{
"_id": ObjectId("5ea18cd00715f152a6fcee24"),
"company_name": "COMPANY 1",
"company_detail_id": [
{
"_id": ObjectId("5e5db61dbb9d1523f7d78e65") //NOTE: company_detail_id == programs._id
}
],
"is_deleted": false,
}
第二次收藏
{
"_id": ObjectId("5e5db61dbb9d1523f7d78e65"),
"name": "PROGRAM 1",
"is_deleted": false
}
查询
var list = await dataModel.aggregate([ { $lookup: { from: "company_details", localField: "company_detail_id._id", foreignField: "_id", as: "programs" } }, { "$project": { "_id": true, "company_name": true, "company_detail_id": true, "is_deleted": true, "programs._id": true, "programs.name": true, "programs.is_deleted": true } }, { "$match": { "_id": "5ea18cd00715f152a6fcee24", "is_deleted":false } } ]).skip(0).limit(10);
问题
这个查询在什么时候起作用
"$match" : {}
or
"$match" : { "company_name": "xyz" }
这个查询不工作什么时候
"$match" : { "_id" : "5ea18cd00715f152a6fcee24" }
or
"$match" : { "_id": "5ea18cd00715f152a6fcee24", "is_deleted":false }
预期结果
{
"_id": "5ea18cd00715f152a6fcee24",
"company_name": "COMPANY 1",
"company_detail_id": [
{
"_id": "5e5db61dbb9d1523f7d78e65" //NOTE: company_detail_id == programs._id
}
],
"is_deleted": false,
"programs": [
{
"_id": "5e5db61dbb9d1523f7d78e65",
"name": "PROGRAM 1",
"is_deleted": false
}
]
}
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework