将 MongoDB 集合转换为嵌套对象数组
Posted
技术标签:
【中文标题】将 MongoDB 集合转换为嵌套对象数组【英文标题】:Convert MongoDB Collection to Array of Nested Object 【发布时间】:2021-07-07 07:12:40 【问题描述】:我的mongo数据格式如下:
country: "Bangladesh", city: "Dhaka", name: "Jobayer", email: "jobayer@gmail.com"
country: "Bangladesh", city: "Dhaka", name: "Mehotaz", email: "mehotaz@gmail.com"
country: "KSA", city: "Dammam", name: "Jabal", email: "jabal@gmail.com"
我想检索如下数据:
[
country: 'Bangladesh',
cities: [
city: 'Dhaka',
contacts: [
name: 'Jobayer',
email: 'jobayer@gmail.com'
,
name: 'Mehotaz',
email: 'mehotaz@gmail.com'
]
]
,
country: 'KSA',
cities: [
city: 'Dammam',
contacts: [
name: 'Jabal',
email: 'jabal@gmail.com'
]
]
];
我尝试了一些分组操作,但无法获得预期的结果。请就我如何实现这一目标提出宝贵的建议。
【问题讨论】:
【参考方案1】:你想做的是两次$group
,一次是country x city
,然后是国家,就像这样:
db.collection.aggregate([
$group:
_id:
country: "$country",
city: "$city"
,
contacts:
$push:
name: "$name",
email: "$email"
,
$group:
_id: "$_id.country",
cities:
$push:
city: "$_id.city",
contacts: "$contacts"
])
Mongo Playground
【讨论】:
以上是关于将 MongoDB 集合转换为嵌套对象数组的主要内容,如果未能解决你的问题,请参考以下文章