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

编程入门 行业动态 更新时间:2024-10-25 10:24:30
本文介绍了Mongodb聚合从文档内部检索文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我对MongoDB的聚合有疑问。

I have problems with MongoDB's aggregation.

在我的作业文档中,它具有creatorParent(单个值)和Children(由mongodb对象ID组成的数组)。在用户文档中,用户具有带有子级详细信息的子级数组。

In my "Job" document, it has creatorParent(single value) and Children(array of mongodb object id). In the "User" document, user has children array with child details.

当用户请求检索此文档时,如果数组包含child的ID,我希望汇总子级详细信息。

When user request for retrieving this document I want aggregate child details, if array contains id of child.

我在一些帮助下编写了一个汇总,它适用于creatorParent,但无论我如何尝试,都不适用于儿童。

I wrote an aggregation with some help, It worked for creatorParent but whatever I've tried, it didn't worked for children.

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", "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" : [] }

推荐答案

尝试一下:

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" } } }, ] );

更多推荐

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

本文发布于:2023-11-22 18:43:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618569.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文档   Mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!