具有最大日期的 mongodb 聚合框架查询

标签 mongodb aggregation-framework

我很少有这样的记录

userid purchased  brand
1      2012-1-21  honda
1      2013-1-1   toyota
1      2013-2-30  mercedez

2      2013-1-1   honda
2      2012-1-1   toyota
2      2013-12-13 mercedez

我想获取最大购买日期的用户记录。喜欢关注

1      2013-2-30  mercedez
2      2013-12-13 mercedez

我正在尝试使用 mongodb 聚合框架工作,但在正确查询时遇到问题。

db.carsrecord.aggregate([{"$match" :{"userid":{"$in":[1,2,3,11]}}} ,
    {"$group":{"_id": {"uid":"$userid"},timecreated:{"$max":"$purchased" }}} ])

它返回给我正确的 hid 和时间但不返回汽车品牌。

"result" : [
    {
        "_id" : {
            "uid" : 1
        },
        "timecreated" : ISODate("2013-10-03T20:01:45.366Z")
    }
],
"ok" : 1

谢谢

最佳答案

你必须使用 $first 运算符,检查这个问题和我的解释答案:Get last documents with a distinct criteria

正确的代码是:

db.carsrecord.aggregate(
      [{"$match" :{"userid":{"$in":[1,2,3,11]}}} , 
       {"$sort": {userid:1, purchased:-1}},
       {"$group":{"_id": 
                     {     "uid":"$userid"  },
                  "timecreated":{"$first":"$purchased" },
                  "brand":{"$first":"$brand"}}} 
      ])

关于具有最大日期的 mongodb 聚合框架查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181069/

相关文章:

mongodb - 检查文档是否存在于mongodb中

mongodb - 为什么这个 MongoDB 聚合查询不返回任何内容?

mongodb - 通过ssh启动时Docker容器mongod错误

php - 无法加载动态库'/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/mongo.so

java - MongoDB:查询子文档:Java

mongodb - 仅检索 MongoDB 集合中对象数组中的查询元素

mongodb - 在 MongoDB 中搜索多个集合

node.js - MongoDB 聚合函数,用于返回特定日期范围内的按日计数

multithreading - 多核服务器上的 mongodb map reduce

MongoDB super 用户身份验证总是失败