如何在 mongo 数据库中用户之间的聊天对话中找到最后一条消息



我正在构建一个聊天系统。这是chat_history文档。

{
toUser:123 <Int32>
fromUser:456 <Int32>
message:"message 1" <String>
timeStamp:"2019-10-09 16:39:14:1414",
toUser:456,
fromUser:123, 
message:"Man super man ",
timeStamp:"2019-10-09 16:43:09:0909 PM +05:30",
toUser:101,
fromUser:123, 
message:"last",
timeStamp:"2019-10-09 16:43:09:0909 PM +05:30",

toUser:123 <Int32>
fromUser:456 <Int32>
message:"message 2"
timeStamp:"2019-10-11 16:39:14:1414",
}

以上是所有用户之间所有聊天消息的文档示例集合。现在我需要根据特定用户之间的时间戳查找最后一条消息的行,例如:123 和其他具有123的用户已完成聊天。

我是蒙戈的新手,我需要在蒙戈中查询。

任何人都可以帮我查询吗?

提前谢谢。

您可以通过此文档模型的聚合获得答案,但为了高性能,我建议这样做

将时间戳另存为date对象并按如下方式查询

db.chat_history.find({$or: [{fromUser: 123}, {toUser: 123}]}).sort({timestamp: -1}).limit(1)

最新更新