MongoDB 查询 - 按奇数大小过滤数组

gcw*_*gcw 2 mongodb mongodb-query

是否可以为具有奇数大小的数组的文档构建查询过滤器而不是这个?

db.records.find({'$or': [{'my_array': {'$size': 1}},
                         {'my_array': {'$size': 3}},
                         {'my_array': {'$size': 5}},
                                     ...
                         {'my_array': {'$size': 15}}]}))
Run Code Online (Sandbox Code Playgroud)

如果您停在某个数量上,过滤器可能无法捕获所有项目。

use*_*814 5

您可以对and$project字段使用下面的聚合查询,并使用函数来保留具有奇数大小的数组的文档。sizedata$mod

db.records.aggregate(
  { $project: { size:{ $size: "$my_array" }, data:"$$ROOT"} },
  { $match: { size: { $mod: [ 2, 1 ] } } }
)
Run Code Online (Sandbox Code Playgroud)