I need your help. I am practicing very simple join method with filter on my two collection. It works without filter. My mongodb query is mention below.
Two Collection
First collection
{
"_id": ObjectId("5ea18cd00715f152a6fcee24"),
"company_name": "COMPANY 1",
"company_detail_id": [
{
"_id": ObjectId("5e5db61dbb9d1523f7d78e65") //NOTE: company_detail_id == programs._id
}
],
"is_deleted": false,
}
Second Collection
{
"_id": ObjectId("5e5db61dbb9d1523f7d78e65"),
"name": "PROGRAM 1",
"is_deleted": false
}
Query
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);
Issue
This query WORKS when
"$match" : {}
or
"$match" : { "company_name": "xyz" }
This query NOT WORKING when
"$match" : { "_id" : "5ea18cd00715f152a6fcee24" }
or
"$match" : { "_id": "5ea18cd00715f152a6fcee24", "is_deleted":false }
Expected Result
{
"_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
}
]
}