Tôi đang làm việc trên hệ thống tin nhắn và tôi cần nhận thông báo cuối cùng từ mỗi người dùng đã gửi tin nhắn tới người dùng đã đăng nhập. Tôi có cấu trúc này trong MongoDB:Mongoose - tìm tin nhắn cuối cùng từ mỗi người dùng
[{
"_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"
}]
tôi cần để có được lĩnh vực from
, message
và created
từ tin nhắn cuối cùng của mỗi người dùng gửi thông điệp tới người dùng đăng nhập. Tôi đã thử sử dụng riêng biệt nhưng nó chỉ trả lại một trường. Tôi có điều này:
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)
}
});
nhưng nó trả về tất cả người dùng đã gửi thư cho người dùng đã đăng nhập và tôi chỉ cần người dùng duy nhất và tin nhắn cuối cùng của họ. Có cách nào để làm điều đó với mongoose?
thể trùng lặp của [ Truy vấn Mongodb: Bản ghi mới nhất theo ngày cho mỗi mục] (http://stackoverflow.com/questions/29368141/mongodb-query-latest-record-by-date-for-each-item) – Dineshaws