Javascript Mongoose,限制数组结果的每个元素
要查找具有ID数组的对象,可以执行以下操作: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
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,明白了。我已经用了很多查询,只是想知道是否可以将所有这些合并到一个查询中。谢谢你,米希尔。当我回到这里时,我会测试一下。