Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb聚合从文档内部检索文档_Mongodb_Aggregation Framework - Fatal编程技术网

Mongodb聚合从文档内部检索文档

Mongodb聚合从文档内部检索文档,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我对MongoDB的聚合有问题 在我的作业文档中,它具有creatorParentsingle值和mongodb对象id的Childrenarray。在用户文档中,用户具有具有子详细信息的子数组 当用户请求检索此文档时,如果数组包含子元素的id,我希望聚合子元素详细信息 我在一些帮助下写了一个聚合,它对creatorParent有效,但无论我做了什么尝试,它对孩子们都不起作用 db.getCollection('Jobs').aggregate([ { $unwind:

我对MongoDB的聚合有问题

在我的作业文档中,它具有creatorParentsingle值和mongodb对象id的Childrenarray。在用户文档中,用户具有具有子详细信息的子数组

当用户请求检索此文档时,如果数组包含子元素的id,我希望聚合子元素详细信息

我在一些帮助下写了一个聚合,它对creatorParent有效,但无论我做了什么尝试,它对孩子们都不起作用

db.getCollection('Jobs').aggregate([
    {
        $unwind: {
            path : "$children"
        }
    },
    {
        $lookup: {
            "from" : "Users",
            "localField" : "creatorparent",
            "foreignField" : "_id",
            "as" : "creatorparent"
        }
    },
    {
        $lookup: {
            "from" : "Users",
            "localField" : "children",
            "foreignField" : "children",
            "as" : "children"
        }
    }
])
用户文档:

{
    "_id" : ObjectId("58daf84877733645eaa9b44f"),
    "email" : "meto93@gmail.com",
    "password" : "vpGl+Fjnef616cRgNbCkwaFDpSI=",
    "passwordsalt" : "99397F4A9D3A499D96694547667E74595CE994D2E83345D6953EF866303E8B65",
    "children" : [ 
        {
            "_id" : ObjectId("58daf84977733645eaa9b450"),
            "name" : "Mert",
            "age" : 5,
            "additionalinformation" : "ilk cocuk",
            "creationtime" : ISODate("2017-03-28T23:56:56.952Z"),
            "userid" : ObjectId("58daf84877733645eaa9b44f"),
            "gender" : null
        }, 
        {
            "_id" : ObjectId("58daf84977733645eaa9b451"),
            "name" : "Sencer",
            "age" : 7,
            "additionalinformation" : "ikinci cocuk",
            "creationtime" : ISODate("2017-03-28T23:56:56.952Z"),
            "userid" : ObjectId("58daf84877733645eaa9b44f"),
            "gender" : null
        }
    ]
}
工作

试试这个:

db.jobs.aggregate(
    [
        {
            $unwind: {
                path : "$children",
            }
        },
        {
            $lookup: {
                "from" : "users",
                "localField" : "creatorparent",
                "foreignField" : "_id",
                "as" : "creatorparent"
            }
        },
        {
            $lookup: {
                "from" : "users",
                "localField" : "children",
                "foreignField" : "children._id",
                "as" : "children"
            }
        },
        {
            $addFields: {
                children : {$arrayElemAt : ["$children",0]}
            }
        },
        {
            $addFields: {
              "children":"$children.children"
            }
        },
        {
            $unwind: {
                path : "$children",
            }
        },
        {
            $group: {
                "_id": "$_id",
                "name": { "$first": "$name" },
                "jobstatus" : { "$first": "$jobstatus" },
                "hourlyrate" : { "$first": "$hourlyrate" },
                "creatorparent" : { "$first" : "$creatorparent" },
                "children": { "$addToSet": "$children"  }
            }
        },

    ]
);

请添加作业和中的示例文档Users@felix我添加了一些例子
db.jobs.aggregate(
    [
        {
            $unwind: {
                path : "$children",
            }
        },
        {
            $lookup: {
                "from" : "users",
                "localField" : "creatorparent",
                "foreignField" : "_id",
                "as" : "creatorparent"
            }
        },
        {
            $lookup: {
                "from" : "users",
                "localField" : "children",
                "foreignField" : "children._id",
                "as" : "children"
            }
        },
        {
            $addFields: {
                children : {$arrayElemAt : ["$children",0]}
            }
        },
        {
            $addFields: {
              "children":"$children.children"
            }
        },
        {
            $unwind: {
                path : "$children",
            }
        },
        {
            $group: {
                "_id": "$_id",
                "name": { "$first": "$name" },
                "jobstatus" : { "$first": "$jobstatus" },
                "hourlyrate" : { "$first": "$hourlyrate" },
                "creatorparent" : { "$first" : "$creatorparent" },
                "children": { "$addToSet": "$children"  }
            }
        },

    ]
);