Javascript Mongoose,限制数组结果的每个元素

Javascript Mongoose,限制数组结果的每个元素,javascript,arrays,node.js,mongodb,mongoose,Javascript,Arrays,Node.js,Mongodb,Mongoose,要查找具有ID数组的对象,可以执行以下操作: var idsArray = ['id1', 'id2', 'id3']; SomeObject.find({'chatroomId': { $in: idsArray}}).exec(); .then(function(someObjects) { console.log(someObjects); }) 是否可以限制数组中每个成员的结果? 不是这样的整体结果: SomeObject.find({'chatroomId': { $i

要查找具有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)}});

考虑到您的文档结构如下:

{
    _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'] 
}

所以你只想要每个ID中的三个?@AndrewLi是的,每个ID中只有三个。我不确定一次查询就可以做到这一点。我想你可能需要一个接一个地查询所有ID,明白了。我已经用了很多查询,只是想知道是否可以将所有这些合并到一个查询中。谢谢你,米希尔。当我回到这里时,我会测试一下。