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

时间:2014-03-19 21:31:45

标签: javascript mongodb mongoose

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

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

我想编写一个查询,允许我选择participants数组中{4}以上元素超过4个元素的所有文档{{1}数组。我能够运行以下查询:

questions

但它仅应用了最后db.myCollection.find({ "$where": "this.questions.length > 3", "$where": "this.participants.length > 4"} ).pretty() 条件(因此仍然只返回一个问题的文档)。如何根据数组长度将多个条件应用于我的查询?

1 个答案:

答案 0 :(得分:2)

您可以使用点表示法来检查特定索引是否存在,如:

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

相当于“查找文件where questions.size()> 3和participant.size()> 4”。

这种方法是由JohnyHK here(第二个答案)

建议的