我正在构建一个聊天系统。这是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)