对于数组操作可以直接用"."来表示取第几个元素
查询 sub_tag 长度为 3 的数据
db.getCollection('test').find({$where: "(this.sub_tag.length == 3)"})
db.getCollection('test').find({"sub_tag": {$size: 3}})
查询tags的长度为5的数据
db.getCollection('test').find({"entities.tags": {$size: 5}})
db.getCollection('test').find({
"entities.tags": {$size: 5}, # 查询tags的长度为5
$and: [ # 满足数组中所有条件
{'entities.tags.1': {$size: 3}}, # tags的第二个元素的长度为3
{'entities.4.tags.0': {$size: 2}} # entities的第四个元素中tags的第一个元素的长度为2
]
})
在第二个表达式中, 虽然$and 是必须全部满足的, 但是可以从不同的tags中找(数组中的条件必须全部满足)