MongoDB - 具有多个字段并获得最新结果
Posted
技术标签:
【中文标题】MongoDB - 具有多个字段并获得最新结果【英文标题】:MongoDB - distinct with multiple fields and get most recent result 【发布时间】:2015-01-31 21:56:58 【问题描述】:我在 mongoDB 中保存用户之间的消息通信,格式如下
instance =
'from_user' : from_user,
'to_user' : to_user,
'message' : msg_text,
'date' : timezone.now(),
对于已登录的用户,我需要查询他与所有其他人的通信并仅获取他们最近的一条消息文本。 例如来自以下数据集
'from_user':'user1', 'to_user':'user2', 'message':'Hello World'
'from_user':'user2', 'to_user':'user1', 'message':'Hello World2' # most recent between user1 & user2
'from_user':'user1', 'to_user':'user3', 'message':'Hello World3'
'from_user':'user3', 'to_user':'user4', 'message':'Hello World4'
查询结果应该如下
'from_user':'user2', 'to_user':'user1', 'message':'Hello World2'
'from_user':'user1', 'to_user':'user3', 'message':'Hello World3'
【问题讨论】:
您的数据字段在哪里?db.coll.find().sort(data:1)
***.com/questions/26725658/… - 看看这个。
蝙蝠尖叫,非常感谢。正是我想要的。
【参考方案1】:
以下查询查找发往用户 1 或来自用户 1 的最新消息:
db.msgs.find( "$or" : [ "from_user" : "user1" , "to_user" : "user1" ] )
.sort( "date" : -1 )
.limit(1)
如果您想查找发给用户的最新消息和来自用户的最新消息,则需要两个查询:
db.msgs.find( "from_user" : "user1" ).sort( "date" : -1 ).limit(1)
db.msgs.find( "to_user" : "user1" ).sort( "date" : -1 ).limit(1)
【讨论】:
以上是关于MongoDB - 具有多个字段并获得最新结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在redis中存储多个字段,并根据某些字段获得前10个结果