我的收藏架构如下
架构:用户
users: [
{
id: 1234,
username: 'someuser'
}
];
架构:消息
messages: [
{
id: 1,
sender_id: <user_id>,
receiver_id: <user_id>,
text: 'some message',
created_at: <timestamp>
}
];
我需要所有用户列出带有时间戳的最后一条消息。应根据最后的消息对用户列表进行排序。时间戳。
我尝试了以下代码。
db.users.aggregate([
{
$lookup: {
from: 'messages',
localField: '_id',
foreignField: ['sender_id', 'receiver_id'], // user id could either be sender id or receiver id. but this field expecting string instead of an array,
as: 'message' // I am expecting single object of message instead collection of messages,
}
},
{
$sort: {
'message.created_at': -1
}
}
])
我知道可以使用rdms轻松完成。我希望mongodb比我想的要好很多。