2017-02-16 159 views
0

我的收藏夹包含以下记录。如何获取mongodb中每组记录的最新记录

{ 
    "_id" : "58a53f4aca3d39bcf9c3890a", 
    "code" : 1, 
    "datetime":"2017-01-01T00:00:00.000Z", 
    "balance" : 2000 
} 

{ 
    "_id" : "58a53f4aca3d39bcf9c3890b", 
    "code" : 2, 
    "datetime":"2017-01-02T00:00:00.000Z", 
    "balance" : 3000 
} 

{ 
    "_id" : "58a53f4aca3d39bcf9c3890c", 
    "code" : 1, 
    "datetime":"2017-01-03T00:00:00.000Z", 
    "balance" : 3000 
} 

{ 
    "_id" : "58a53f4aca3d39bcf9c3890d", 
    "code" : 1, 
    "datetime":"2017-01-04T00:00:00.000Z", 
    "balance" : 4000 
} 

{ 
    "_id" : "58a53f4aca3d39bcf9c3890e", 
    "code" : 2, 
    "datetime":"2017-01-05T00:00:00.000Z", 
    "balance" : 7000 
} 

{ 
    "_id" : "58a53f4aca3d39bcf9c3890f", 
    "code" : 1, 
    "datetime":"2017-01-06T00:00:00.000Z", 
    "balance" : 6000 
} 

我正在基于代码制作一组记录。根据上述记录,只有2组代码:1和代码:2。

,所以我想以下内容作为编码1的最新记录输出和CODE2

{ "_id" : "58a53f4aca3d39bcf9c3890f", "code" : 1,"datetime":"2017-01-06T00:00:00.000Z", "balance" : 6000 } 

{ "_id" : "58a53f4aca3d39bcf9c3890e", "code" : 2,"datetime":"2017-01-05T00:00:00.000Z", "balance" : 7000 } 

所以,我怎样才能使查询,这将给我上面的输出?

+1

您需要ta添加日期字段来实现此目的,否则您将无法知道哪些文档是最新的 – felix

+0

@felix是的,我有每个记录的日期时间字段,那么我怎么能得到该输出。 –

回答

0

据的MongoDB文档,

聚合操作从多个文档一起组值,并且可以执行各种所分组的数据的操作的返回单个结果

作为解决上述请尝试执行以下查询

db.collection.aggregate(

    // Pipeline 
    [ 
     // Stage 1 
     { 
      $group: { 
       _id:{code:'$code'}, 
       doc:{ "$last": "$$ROOT" } 

      } 
     }, 

    ] 

);