查找数组包含超过X条记录的记录
Finding records where arrays contain more than X records?
我有一个集合,其中包含如下结构的文档:
{
"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记录数组中选择随机项,并将其转换为数组
- 解析多维数组JS的数组并记录索引
- Javascript如何找到数组中的最大数字,并记录位置
- 如何在js中从数组中删除记录
- Ember - 绑定到数组控制器中的过滤列表,然后添加新记录
- jQuery:记录数组中的元素变化,并通过索引检查它是如何变化的
- 异步瀑布返回节点 js 和 mongodb 中数组的单个记录
- 将对象数组记录为 JSDoc 中回调函数的参数
- Javascript 从 JSON 数组中提取特定记录
- 使用单个查询将多个记录插入到 webSQL 表中,来自对象数组的数据
- 根据内部数组值跳过 JSON 数据记录 - D3
- 将输入记录到数组中,仅打印新输入
- 在Ember.js Ember数据记录数组上迭代
- rails传递记录数组(JSON)
- 将两个数组连接到一个记录数组中
- 按升序对记录数组进行排序
- 记录数组索引,而不是值(JavaScript) -为什么?
- 当使用时,不填充记录,否则填充记录数组