获取每个用户的最后创建 object?

Get last created object for each user?

我有一个 collection,比方说,"Things":

{ id: 1
    creator: 1
    created: Today }
{ id: 2
    creator: 2
    created: Today }
{ id: 3
    creator: 2
    created: Yesterday }

我想创建一个查询,该查询将 return 一组用户创建的每个事物,但仅限于他们最近创建的事物。

这会是什么样子?我可以用一系列创作者搜索我的 collection,它工作得很好 - 我怎么也只能得到每个用户最近创建的 object?

Thing.find({ _creator : { "$in" : creatorArray })...

您不能 findsort 并在单个 find() 查询中选择最新的。但是你可以使用聚合来做到这一点:

  • Match 作者所在的所有记录 对于.
  • Sort 根据创建的字段降序排列记录。
  • Group 基于创建者的文档。
  • 从组中挑选每个创作者的第一个文件,这也将是 他的最新作品。
  • Project 必填字段。

片段:

Thing.aggregate([
{$match:{"creator":{$in:[1,2]}}},
{$sort:{"created":-1}},
{$group:{"_id":"$creator","record":{$first:"$$ROOT"}}},
{$project:{"_id":0,
           "id":"$record.id",
           "creator":"$record.creator",
           "created":"$record.created"}}
], function(err,data){
   })