Mesaj sistemi üzerinde çalışıyorum ve giriş yapan kullanıcıya mesaj gönderen her kullanıcıdan son mesajı almam gerekiyor. Ben mongodb bu yapıya sahiptir:Mongoose - her kullanıcıdan gelen son mesajı bul
[{
"_id": "551bd621bb5895e4109bc3ce",
"from": "admin",
"to": "user1",
"message": "message1",
"created": "2015-04-01T11:27:29.671Z"
}, {
"_id": "551bd9acf26208ac1d9b831d",
"from": "user1",
"to": "admin",
"message": "message2",
"created": "2015-04-01T11:42:36.936Z"
}, {
"_id": "551bdd6d849d53001dd8a64a",
"from": "user1",
"to": "user2",
"message": "message3",
"created": "2015-04-01T11:58:37.858Z"
}, {
"_id": "551bdd99849d53001dd8a64b",
"from": "user2",
"to": "admin",
"__v": 0,
"message": "message4",
"created": "2015-04-01T11:59:21.005Z"
}, {
"_id": "551bdda1849d53001dd8a64c",
"from": "user1",
"to": "admin",
"__v": 0,
"message": "message5",
"created": "2015-04-01T11:59:29.971Z"
}]
Ben açmış kullanıcıya mesaj gönderdi her kullanıcının son mesajından alanları from
, message
ve created
almak gerekir. Ayrı kullanmayı denedim ama sadece bir alan döndürüyor. Bunu alabilir:
Message.find({
to: req.user.username
})
.select('message created')
.sort('-created')
.exec(function (err, messages) {
if (err) {
return res.status(400).send({
message: getErrorMessage(err)
});
} else {
res.json(messages)
}
});
ama açmış kullanıcıya mesajlar gönderdi tüm kullanıcıları döndürür ve sadece benzersiz kullanıcıları ve son mesaj olması gerekir. Firavunlarla nasıl yapılacağı bir yolu var mı? senin boru hattı aşamaları $match
, $sort
, $group
ve $project
ifadeleri var
olası yinelenen [ Mongodb Sorgu: Her öğe için tarihe göre en son kayıt] (http://stackoverflow.com/questions/29368141/mongodb-query-latest-record-by-date-for-each-item) – Dineshaws