我有一个小问题。
我想检索集合中 id 位于给定数组中的所有元素。这个我可以做。问题是,id 必须出现在多个数组中(而且我事先不知道有多少个)。
所以你有
Test.find({
$and: [
{ $in: blabla },
...
]
}
问题是我可以有多个 $in 子句,但调用该函数时我不知道有多少个。有没有办法动态指定这个? (它只是一个包含 id 的数组,如果 id 存在于每个数组中,则返回该元素)。
最佳答案
以编程方式构建您的 $and
查询对象以包含您需要的所有数组:
var arrayOfArrays = [[...], [...], ...];
var query = { $and: [] };
for (var i=0; i<arrayOfArrays.length; ++i) {
query.$and.push({ _id: {$in: arrayOfArrays[i]} });
}
MyModel.find(query, function(err, docs) {...});
或者您可以使用map
更简洁一点:
var query = { $and: arrayOfArrays.map(function(item) { return {$in: item}; }) };
MyModel.find(query, function(err, docs) {...});
关于javascript - Mongoose - 获取嵌套数组/动态生成的 $and 子句中 id 的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713742/