查询 MongoDB 中某个 Array 字段内容长度大于 N 的内容

现在有一组 mongo, 需要寻找某个字段元素个数大于 N 的文档. 有几种简单的做法可以处理这个.

最朴素的方法就是用 where 关键词

db.accommodations.find( { $where: "this.name.length > 1" } );

好处是大于 1 可以用, 小于 3 可以用, 正好等于 x 也可以用.

但是它的局限在于 where 后的内容是 js, 速度会慢一茬.

另一个神奇的方法是 :

db.accommodations.find({'name.1': {$exists: true}})

寻找 name 的 id 为 1 的内容存在的那个.

当然理论上说也可以用它做大于, 大于等于, 小于等于, 等于这些了, 无非就是一个 or 关键词. 不过 query 复杂了点, 可能并不比前面那个快就是.

ref:

How to query for documents where array size is greater than one (1) in mongodb