$ unwind mongodb查询中的2个字段

编程入门 行业动态 更新时间:2024-10-23 01:32:40
本文介绍了$ unwind mongodb查询中的2个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我要$unwind 2个字段,school和home. 数据库结构就像;

I want to $unwind 2 fields, school and home. database structure is like;

{ "id" : 1, "school" : [ { "path" : "school1", "code" : "code1", }, { "path" : "school2", "code" : "code2", }, { "path" : "school3", "code" : "code3", }, { "path" : "school4", "code" : "code4", } ], "home" : [ { "path" : "home1", "code" : "homeCode1", }, { "path" : "home2", "code" : "homeCode2", }, ] }

我想要$unwind school和home字段,并将它们分别作为;

I wanted to $unwind school and home fields and get each of them as;

{ "id" : 1, "school" : [ { "path" : "school1", "code" : "code1", } }, { "id" : 1, "school" : [ { "path" : "school2", "code" : "code2", } }, { "id" : 1, "school" : [ { "path" : "school3", "code" : "code3", } }, { "id" : 1, "school" : [ { "path" : "school4", "code" : "code4", } }, { "id" : 1, "home" : [ { "path" : "home1", "code" : "homeCode1", } }, { "id" : 1, "home" : [ { "path" : "home2", "code" : "homeCode2", } }

我写的旨在获得上述格式的查询是;

The query that I wrote which aims to get format above is;

db.collection.aggregate([ {$unwind: "$school"}, {$unwind: "$home"} ]).pretty()

但是query结果是成对的;

{ "id" : 1, "school" : { "path" : "school1", "code" : "code1" }, "home" : { "path" : "home1", "code" : "homeCode1" } } { "id" : 1, "school" : { "path" : "school1", "code" : "code1" }, "home" : { "path" : "home2", "code" : "homeCode2" } } { "id" : 1, "school" : { "path" : "school2", "code" : "code2" }, "home" : { "path" : "home1", "code" : "homeCode1" } } { "id" : 1, "school" : { "path" : "school2", "code" : "code2" }, "home" : { "path" : "home2", "code" : "homeCode2" } } { "id" : 1, "school" : { "path" : "school3", "code" : "code3" }, "home" : { "path" : "home1", "code" : "homeCode1" } } { "id" : 1, "school" : { "path" : "school3", "code" : "code3" }, "home" : { "path" : "home2", "code" : "homeCode2" } } { "id" : 1, "school" : { "path" : "school4", "code" : "code4" }, "home" : { "path" : "home1", "code" : "homeCode1" } } { "id" : 1, "school" : { "path" : "school4", "code" : "code4" }, "home" : { "path" : "home2", "code" : "homeCode2" } }

我如何分别$unwind 2个字段,而不是这种结果对格式?

How can I $unwind 2 fields separately, rather than this resulted pair format?

推荐答案

这不可能直接实现.使用MongoDB 3.4,有可能的解决方法. $facet可用于在同一文档的单个阶段中执行一组以上的管道操作.这对您的情况很有用.

It is not directly possible. With MongoDB 3.4 there is a possible workaround. $facet can be used to execute more than one set of pipeline operations in a single stage on the same document. It can be useful for your case.

db.collection.aggregate({ '$facet': { 'school': [{ '$unwind': '$school' }, { '$project': { _id: '1', school: 1 } }], 'home': [{ '$unwind': '$home' }, { '$project': { _id: '1', home: 1 } }] } }, { '$project': { 'schoolAndHome': { '$setUnion': ['$school', '$home'] } } }, { '$unwind': '$schoolAndHome' }, { '$replaceRoot': { 'newRoot': '$schoolAndHome' } })

更多推荐

$ unwind mongodb查询中的2个字段

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

发布评论

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

>www.elefans.com

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