有我的文件:
> db.messages.find({})
{ "_id" : ObjectId("5c1f9e3d37e9e12650b9971a"),
"groupId" : ObjectId("5c0fe59f5dcbbe30b732616c"),
"content" : "hi"
}
{ "_id" : ObjectId("5c1f9e3d37e9e12650b9971a"),
"groupId" : ObjectId("5c0fe59f5dcbbe30b732616c"),
"content" : "hello"
}
{ "_id" : ObjectId("5c1f9e3d37e9e12650b9971a"),
"groupId" : ObjectId("5c0fe59f5dcbbe30b732616d"),
"content" : "hi"
}
{ "_id" : ObjectId("5c1f9e3d37e9e12650b9971a"),
"groupId" : ObjectId("5c0fe59f5dcbbe30b732616e"),
"content" : "hi"
}
一组有很多信息。现在我有类似的groupId:[ObjectId(“ 5c0fe59f5dcbbe30b732616c”),ObjectId(“ 5c0fe59f5dcbbe30b732616d”)]
我想找到$in
与sql一起使用的最新消息:
SELECT * FROM `message` WHERE `groupId` IN (xx,xx) group by
groupId order by id desc .
用mongo shell怎么做?
您必须首先$sort
使用该createdAt
字段,以$group
使用$first
聚合来获取阶段中的最新消息
db.collection.aggregate([
{ "$match": { "groupId": { "$in": [ObjectId("5c0fe59f5dcbbe30b732616c"), ObjectId("5c0fe59f5dcbbe30b732616d")] }}},
{ "$sort": { "createdAt": -1 }},
{ "$group": {
"_id": "$groupId",
"content": { "$first": "$content" }
}}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句