mongodb将重复文档分组到一个数组中
我试图将特定密钥的所有文档组织成一个数组。如果任何其他参数不同,我不希望一次又一次地获得相同的键元素。 样本文件:-mongodb将重复文档分组到一个数组中,mongodb,Mongodb,我试图将特定密钥的所有文档组织成一个数组。如果任何其他参数不同,我不希望一次又一次地获得相同的键元素。 样本文件:- { name:"sweta", age:23 address:india, hobby:singing }, { name:"john", age:24 address:germany, hobby:singing }, { name:"peter", age:24 address:india
{
name:"sweta",
age:23
address:india,
hobby:singing
},
{
name:"john",
age:24
address:germany,
hobby:singing
},
{
name:"peter",
age:24
address:india,
hobby:dancing
},
{
name:"marry",
age:23
address:india,
hobby:singing
},
我试过什么
return db.aggregate([
{
$match:{age:23}
},
{
"$group":{
"_id": {"age":"$age"},
}
},
{
"$group":{
"_id":"$_id.age",
"name":{ $first: "$_id.name"},
"address":{ $first: "$_id.address"},
"hobby":{ $first: "$_id.hobby"},
}
])
基本上,这种格式的分组减少了最大的业务逻辑
预期答案=
[
{
"23":[
{name:"sweta",address:india,hobby:singing},
{name:"marry",address:india,hobby:singing},
]
},
{
"24":[
{name:"john",address:germany,hobby:singing},
{name:"peter",address:france,hobby:singing}
]
}
]
有人知道怎么做吗?你可以试试这个
db.getCollection('Test').aggregate([
{ $group: { _id: "$age" ,
data: { $push: {"name":"$name", "address":"$address", "hobby":"$hobby"}},
}
},
{ "$replaceRoot": {
"newRoot": {
"$arrayToObject": {
"$concatArrays": [
[
{ "k": {$toString: "$_id"}, "v": "$data" }
]
]
}
}
}}
])
结果:
[ {
"24" : [
{ "name" : "john", "address" : "germany", "hobby" : "singing" },
{ "name" : "peter", "address" : "india", "hobby" : "dancing" }
]
},
{
"23" : [
{ "name" : "sweta", "address" : "india", "hobby" : "singing" },
{ "name" : "marry", "address" : "india", "hobby" : "singing" }
]
}]