具有嵌套文档的Mongodb $ lookup

编程入门 行业动态 更新时间:2024-10-22 19:42:10
本文介绍了具有嵌套文档的Mongodb $ lookup的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用mongo的查找创建联接.我有这三个收藏.

I am trying to create a join using mongo's lookup. I have these three collections.

orderTracking

orderTracking

{ _id: ObejctId("59fb7815b3b8429f4750b0df"), itemName : "Hamam Soap", TrackLocation: [{locationId: 1, at:"2017-10-11"}, {locationId: 2,at:"2017-10-13"}], userId : 12, price: 20 }

locationType

locationType

{ _id: ObejctId("59b2111345cb72345a35fefd"), locationId : 1 productTypeName: "Warehouse" },{ _id: ObejctId("59af8ce445cb72345a35feea"), locationId : 2 productTypeName: "On Transit" }

用户

{ _id: ObejctId("59a504eb6171b554c02292a9"), "user ID":12, "userName" : "Shahabaz Shafi", "dateOfBirth" : "1992-01-01", "addres": { "country" : "India", "state" : "Karnataka", "city" : "Bengaluru" } }

并尝试将其简化为此类输出.

and trying to flatten this to this kind of output.

{ "userName" : "Shahabaz Shafi", "userId":12, "dateOfBirth" : "1992-01-01", "country" : "India", "state" : "Karnataka", "city" : "Bengaluru" "locationType" : [ {productTypeName: "Warehouse",at:"2017-10-11"}, {productTypeName: "On Transit",at:"2017-10-13"}] }

15-11-2018更新了输出

15-11-2018 Updated output

对输出列进行了一些更改

Made some changes to the output columns

{ "userName":"Shahabaz Shafi", "userId":12, "dateOfBirth":"1992-01-01", "country":"India", "state":"Karnataka", "city":"Bengaluru", "items":[ { "itemName":"Hamam Soap", "userId":12, "price":20, "TrackLocation":[ { "locationId":1, "at":"2017-10-11", "productTypeName":"Warehouse" }, { "locationId":2, "at":"2017-10-13", "productTypeName":"On Transit" } ] } ] }

我该如何处理?

PS:我也在使用指南针

PS : I am also using compass

推荐答案

您可以将以下聚合与mongodb 3.6 及更高版本一起使用

You can use below aggregation with mongodb 3.6 and above

db.User.aggregate([ { "$lookup": { "from": "orderTracking", "let": { "userId": "$userId" }, "pipeline": [ { "$match": { "$expr": { "$eq": ["$userId", "$$userId"] }}}, { "$unwind": "$TrackLocation" }, { "$lookup": { "from": "locationType", "let": { "location": "$TrackLocation.locationId" }, "pipeline": [ { "$match": { "$expr": { "$eq": ["$locationId", "$$location"] }}} ], "as": "locationType" }}, { "$project": { "_id": 0, "productTypeName": { "$arrayElemAt": ["$locationType.productTypeName", 0] }, "at": "$TrackLocation.at" }} ], "as": "locationType" }}, { "$replaceRoot": { "newRoot": { "$mergeObjects": ["$addres", "$$ROOT"] }}}, { "$project": { "addres": 0 }} ])

输出

[ { "_id": ObjectId("59a504eb6171b554c02292a9"), "city": "Bengaluru", "country": "India", "dateOfBirth": "1992-01-01", "locationType": [ { "at": "2017-10-11", "productTypeName": "Warehouse" }, { "at": "2017-10-13", "productTypeName": "On Transit" } ], "state": "Karnataka", "userId": 12, "userName": "Shahabaz Shafi" } ]

更多推荐

具有嵌套文档的Mongodb $ lookup

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

发布评论

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

>www.elefans.com

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