在mongoDB中查询以获取具有不同值并最后添加的记录

时间:2016-11-15 15:37:32

标签: node.js mongodb express mongoose

我有这样的谢谢:

received command: cmd1
streambuf contains 8 bytes.

如何创建查询以获取每个用户的最后一条消息?

2 个答案:

答案 0 :(得分:2)

您可以使用聚合查询

db.collection.aggregate([
    { "$sort" : { "createDate" : -1 } },
    {
        "$group" : {
            "_id" : "$from",
            "from" : { "$first" : "$from" },
            "to" : { "$first" : "$to" },
            "content" : { "$first" : "$content" },
            "createDate" : { "$first" : "$createDate" }
        }
    }
])

答案 1 :(得分:1)

您可以在此处使用累加器。最大累加器将按from分组,然后取最大值createdDate,这将返回最新值。

 db.messages.aggregate([
      {"$match":{}},
      {"$group":{
        "_id":"$from",
        "createdDate":{"$max":"$createdDate"},
        "content" : "$content"
        }
      },
      {"$sort":{"createdDate":-1}},{"$skip":0},{"$limit":10}],{})