如題我想要得到 [[value1,value2],[value3,value4],[value5,value6]],這樣的數(shù)據(jù),但是 $push 只能這樣
{
$push: {
key1:value1,
key2:value2
}
}
最后得到 [{key1:value1,key2:value2},{key1:value3,key2:value4},{key1:value5,key2:value6}]
請問在不重新遍歷的情況下怎樣才能得到想要的數(shù)據(jù)呢?
補充:
原數(shù)據(jù)格式為
{
key1:value1,
key2:value2,
key3:value3,
key4:value4
}
比如我想要以key1,key4分組,算key2,key3的平均值
{
$group: {
_id:{
key1:$key1,
key4:$key4
},
key2_avg:{
$avg:$key2
},
key3_avg:{
$avg:$key3
}
}
},
{
$group: {
_id:$_id.key4,
key2_array:{
$push:{
key2:$key2_avg
}
},
key3_array:{
$push:{
key3:$key3_avg
}
}
}
}
最后我想輸出這樣的格式
{
_id:value4,
key2_array:[[key1,key2_avg],[key1,key2_avg]],
key3_array:[[key1,key3_avg],[key1,key3_avg]]
},
3 回答

BIG陽
TA貢獻1859條經(jīng)驗 獲得超6個贊
你要的形式看起來有點奇怪,我也沒理解背后的意義是得到什么,但是單就形式上講是可以做到的,看這樣是不是你要的結(jié)果:
db.test.aggregate([{
$group: {
_id: {
key1: "$key1",
key4: "$key4"
},
key2_avg: {
$avg: "$key2"
},
key3_avg: {
$avg: "$key3"
}
}
}, {
$project: {
key2: ["$_id.key1", "$key2_avg"],
key3: ["$_id.key1", "$key3_avg"]
}
}, {
$group: {
_id: "$_id.key4",
key2_array: {
$push: "$key2"
},
key3_array: {
$push: "$key3"
}
}
}]);

夢里花落0921
TA貢獻1772條經(jīng)驗 獲得超6個贊
題主想要一個多維數(shù)組, 就像如下操作就行了. 在
array
中添加一個array
.
db.user.update({}, {$push: {test: ['a', 'b']} })
查詢返回結(jié)果
{ "_id" : NumberLong(2), "test" : [ [ "a", "b" ], [ "a", "b" ] ] }
添加回答
舉報
0/150
提交
取消