你好,我有这个json
db.people.insert({
"ad" : "noc2",
"createdDate" : ISODate(),
"list" : [
{
"id" : "p45",
"date" : ISODate("2014-01-01T12:18:30.568Z"),
"value3" : 21,
"value1" : 77,
"value2" : 489
},
{
"id" : "p6",
"date" : ISODate("2013-07-18T12:18:30.568Z"),
"value3" : 20,
"value1" : 20,
"value2" : 7
},
{
"id" : "4578",
"date" : ISODate("2013-07-18T12:18:30.568Z"),
"value3" : 21,
"value1" : 300,
"value2" : -319
}
]
})
我希望得到我的数组的最大值。例如,我想要一个json 这个:
“结果”:[ { “_id”:“p45”, “价值”:587 } ]
我的聚合请求不起作用的是:
db.test1.aggregate({$match: "ad":"noc2"},{$unwind: '$list'},{$group: {_id: '$ad', list: {recommand: {$max: '$list'}}}});
答案 0 :(得分:1)
试试这个:
db.people.aggregate([
{$match:{ad:"noc2"}},
{$unwind:"$list"},
{$project:{_id:0, _id":"$list.id", "value":{$add:["$list.value1","$list.value2","$list.value3"]}}},
{$sort:{value:-1},
{$limit:1}
])
输出:
{ "result" : [ { "_id" : "p45", "value" : 587 } ], "ok" : 1 }
答案 1 :(得分:1)
答案包含查询语法中的几个问题,但大部分都有效。您可以在下面找到固定查询:
db.people.aggregate(
{$match:{ad:"noc2"}},
{$unwind:"$list"},
{$project:{_id:0, _id:"$list.id", "value":{$add:["$list.value1","$list.value2","$list.value3"]}}},
{$sort:{value:-1}},
{$limit:1}
);