首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回mongodb聚合请求数组的最大值

返回mongodb聚合请求数组的最大值
EN

Stack Overflow用户
提问于 2013-07-22 18:23:59
回答 2查看 1.6K关注 0票数 1

你好,我有这个json

代码语言:javascript
复制
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'}}}});

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-22 22:12:41

答案包含查询语法中的几个问题,但大多数情况下都是有效的。下面你可以找到固定的查询:

代码语言:javascript
复制
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}
);
票数 2
EN

Stack Overflow用户

发布于 2013-07-22 19:46:17

试试这个:

代码语言:javascript
复制
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}
])

输出:

代码语言:javascript
复制
{ "result" : [ { "_id" : "p45", "value" : 587 } ], "ok" : 1 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17785129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档