我有这样的谢谢:
received command: cmd1
streambuf contains 8 bytes.
如何创建查询以获取每个用户的最后一条消息?
答案 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}],{})