要查找包含ID数组的对象,我们可以这样做:
var idsArray = ['id1', 'id2', 'id3'];
SomeObject.find({'chatroomId': { $in: idsArray}}).exec();
.then(function(someObjects) {
console.log(someObjects);
})
是否可以限制数组中每个成员的结果? 不是像这样的整体结果:
SomeObject.find({'chatroomId': { $in: idsArray}}).limit(3)
但是对于每个元素。也许是这样的:
SomeObject.find({'chatroomId': { $in: idsArray.forEach.limit(3)}});
答案 0 :(得分:0)
考虑到您的文档结构如下:
{
_id : ObjectId("591931855d0aad80c996eab2)",
chatName : 'SchoolChat',
chatrootId : ['id1', 'id2','id3','id4','id5']
}
您可以使用以下查询来获取所需内容:
db.collection_name.aggregate([
{ $unwind : '$chatrootId' },
{ $limit : 3},
{ $group : {
_id : '$_id',
chatName : { $first : '$chatName' },
chatroomId : { $push : '$chatrootId' },
}
}
]);
它会给你:
{
"_id" : ObjectId("591931855d0aad80c996eab2"),
"chatName" : "SchoolChat",
"chatroomId" : [ 'id1', 'id2', 'id3']
}