【发布时间】:2016-05-10 05:00:01
【问题描述】:
我有 2 个收藏:
用户
{
_id: 'user_id1',
username: 'user1',
}
{
_id: 'user_id2',
username: 'user2',
}
{
_id: 'user_id3',
username: 'user3',
}
收件箱
{
_id: 'inbox_id1',
from: {_id: 'user_id1', username: 'user1'},
to: {_id: 'user_id2', username: 'user2'},
text: 'Hello there',
timestamp: new Date(),
}
{
_id: 'inbox_id2',
from: {_id: 'user_id1', username: 'user1'},
to: {_id: 'user_id2', username: 'user2'},
text: 'Trying again...',
timestamp: new Date(),
}
{
_id: 'inbox_id3',
from: {_id: 'user_id3', username: 'user3'},
to: {_id: 'user_id2', username: 'user2'},
text: 'You there?',
timestamp: new Date(),
}
每当用户进入他的收件箱时,我想向他显示线程列表,其中应包括来自每个用户的最新消息列表。所以基本上我想获得不同的文档(基于from._id 字段),并且只有最新的文档(基于timestamp 字段)。
所以user2 的结果应该只包含 2 个文档(inbox_id2 和 inbox_id3)。
我知道我需要为此使用聚合,但不确定如何准确。
【问题讨论】:
-
您的 MongoDB 服务器版本是多少?
标签: mongodb aggregation-framework distinct