javascript - 查找数组包含多于 X 条记录的记录?

标签 javascript mongodb mongoose

我有一个集合,其中包含结构如下的文档:

{
   "title": "some title",
   "participants": [1,2,3],
   "questions": ["question1", "question2", "question3"]
}

我想编写一个查询,允许我选择 participants 中包含超过 4 个元素的所有文档。 questions 中的数组超过 3 个元素大批。我能够运行以下查询:

db.myCollection.find({
        "$where": "this.questions.length > 3", 
        "$where": "this.participants.length > 4"}
).pretty()

但它只应用了最后一个 $where条件(因此只有 1 个问题的文档仍会被退回)。如何将基于数组长度的多个条件应用于我的查询?

最佳答案

您可以使用点符号来检查特定索引是否存在,例如:

db.myCollection.find({
        "questions.3" : {$exists : true}, 
        "participants.4" : {$exists : true}}
)

这相当于“查找 questions.size() > 3 并且participants.size() > 4 的文档”。

此方法是由 JohnyHK 建议的here (第二个答案)

关于javascript - 查找数组包含多于 X 条记录的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518531/

相关文章:

Node.js HTTP如何做一个HTTP请求限速?

javascript - 如何从nodejs、mongoose mongodb集合中查找返回

javascript - 在顺序 javascript 数组中查找范围的最有效方法

javascript - html5 视频搜索栏在 ios 中禁用

javascript - 创建自定义 LLVM Frontned (VBS >> JS)

java - 如何以编程方式从文件中的值实例化动态加载的类?

java - 在 Spring 中使用 Java 驱动程序的无尽 MongoDB ReplicaSetStatus 更新程序异常

javascript - 为列表项 ng-repeat angular 创建唯一的错误消息

javascript - 使用 nodeJS 查询前 5 个查看项目(排序)的 Mongoose

javascript - MongoDB 带有 geojson 的畸形几何