我有一个集合,其中包含结构如下的文档:
{
"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 的文档”。
关于javascript - 查找数组包含多于 X 条记录的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518531/