node.js - mongodb lookup retrieve a parent object with no children -
i have a question problem in query in mongodb: can't retrieve surveys no childrens groups more information should check links:
$lookup multiple collections, , nested output
survey.aggregate([ { "$lookup": { "from": "groups", "localfield": "_id", "foreignfield": "survey", "as": "groups" }}, { "$unwind": "$groups" }, { "$lookup": { "from": "questions", "localfield": "groups._id", "foreignfield": "group", "as": "groups.questions" }}, { "$unwind": "$groups.questions" }, { "$lookup": { "from": "response", "localfield": "groups.questions._id", "foreignfield": "question", "as": "groups.questions.responses" }}, { "$group": { "_id": { "_id": "$_id", "company": "$company", "created_date": "$created_date", "enabled": "$enabled", "name": "$name", "groups": { "_id": "$groups._id", "name": "$groups.name", "order": "$groups.order", "created_date": "$groups.created_date", "survey": "$groups.survey" } }, "questions": { "$push": "$groups.questions" } }}, { "$sort": { "_id": 1 } }, { "$group": { "_id": "$_id._id", "company": { "$first": "$_id.company" }, "created_date": { "$first": "$_id.created_date" }, "enabled": { "$first": "$_id.enabled" }, "name": { "$first": "$_id.name" }, "groups": { "$push": { "_id": "$_id.groups._id", "name": "$_id.groups.name", "order": "$_id.groups.order", "created_date": "$_id.groups.created_date", "survey": "$_id.groups.survey", "questions": "$questions" } } }}, { "$sort": { "_id": 1 } } ]
your lookup has no issue. whenever unwind document empty array filed, unwind complete remove document.this why not getting result.
your problem can solve setting preservenullandemptyarrays null.
{ $unwind: { path: <field path>, // add unbind doc lookup pipeline. preservenullandemptyarrays: true } }
Comments
Post a Comment