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

酷酷

我对 MongoDB 的聚合有问题。

在我的“作业”文档中,它有 creatorParent(单值)和 Children(mongodb 对象 id 数组)。在“用户”文档中,用户拥有包含子项详细信息的子项数组。

当用户请求检索此文档时,我想要聚合子项详细信息,如果数组包含子项的 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" : "[email protected]",
    "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
        }
    ]
}

工作

{
    "_id" : ObjectId("58db0a2d77733645eaa9b453"),
    "creationtime" : ISODate("2017-03-29T01:13:17.509Z"),
    "startingtime" : ISODate("2017-04-03T13:00:00.000Z"),
    "endingtime" : ISODate("2017-04-03T17:00:00.000Z"),
    "children" : [ 
        ObjectId("58daf84977733645eaa9b450"), 
        ObjectId("58daf84977733645eaa9b451")
    ],
    "creatorparent" : ObjectId("58daf84877733645eaa9b44f"),
    "applicants" : []
}
mgyongyosi

试试这个:

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"  }
            }
        },

    ]
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB检索与聚合字段对应的子级别文档值

来自分类Dev

无法从MongoDB检索文档

来自分类Dev

使用$ elemMatch时如何限制/检索MongoDB文档的内部字段

来自分类Dev

文档内部的mongoDB数组

来自分类Dev

MongoDB聚合,包括丢失的文档

来自分类Dev

MongoDB聚合:创建子文档

来自分类Dev

MongoDB子文档键聚合

来自分类Dev

在MongoDB中聚合异构文档

来自分类Dev

mongodb中的嵌套文档聚合

来自分类Dev

MongoDB 文档设置和聚合

来自分类Dev

MongoDB仅查询内部文档

来自分类Dev

MongoDB从数组返回内部文档

来自分类Dev

使用mongodb聚合将子文档合并到主文档

来自分类Dev

使用mongodb聚合将子文档合并到主文档

来自分类Dev

MongoDb:聚合$ lookup并过滤外部文档

来自分类Dev

使用MongoDB聚合管道计数文档

来自分类Dev

mongodb $聚合空数组和多个文档

来自分类Dev

mongodb聚合框架按嵌套文档匹配

来自分类Dev

mongodb聚合获取匹配文档的总数

来自分类Dev

MongoDb管道聚合$ unwind子子文档

来自分类Dev

MongoDb管道聚合排序子子文档

来自分类Dev

MongoDb使用$ add聚合嵌套文档

来自分类Dev

每个文档级别的聚合mongodb

来自分类Dev

mongodb-嵌套文档的子聚合

来自分类Dev

MongoDB聚合以实际文档替换ObjectId数组

来自分类Dev

mongodb聚合框架按嵌套文档匹配

来自分类Dev

mongodb聚合获取匹配文档的总数

来自分类Dev

使用MongoDB聚合管道计数文档

来自分类Dev

在聚合mongodb中按文档数组排序