javascript - Mongoose - 获取嵌套数组/动态生成的 $and 子句中 id 的所有元素

标签 javascript node.js mongodb mongoose

我有一个小问题。

我想检索集合中 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/

相关文章:

Javascript:了解包装在函数中的变量

javascript - 菜单栏,它不在顶部,但是一旦向下滑动菜单栏就会粘在顶部

javascript - 错误为 "message": "Forbidden" trying to query an Apollo Serverless Lambda server

c++ - 使用Visual C++构建mongodb源码出错

mongodb - MongoDB 日志是如何工作的

javascript - 检查项目 Package::JSHINT 中的所有 JS 文件

javascript - 查找当前是否选择了文本框

angularjs - 在网页中提供 REST-API 数据而不暴露 API 端点

javascript - 登录检索器上的 Sequelize 查找总是成功

MongoDB 获取按计数排序的文档