你好,我有这个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:
"result“:{ "_id”:"p45","value“:587 }
我不工作的聚合请求是:db.test1.aggregate({$match: "ad":"noc2"},{$unwind: '$list'},{$group: {_id: '$ad', list: {recommand: {$max: '$list'}}}});
发布于 2013-07-22 22:12:41
答案包含查询语法中的几个问题,但大多数情况下都是有效的。下面你可以找到固定的查询:
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}
);发布于 2013-07-22 19:46:17
试试这个:
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 }https://stackoverflow.com/questions/17785129
复制相似问题