如何查找特定字段不在数组类型中的文档?

时间:2016-11-02 07:23:01

标签: arrays mongodb

考虑以下文件:

{'name': 'A', 'link':'All'},
{'name': 'B', 'link':['All','1','2']},
{'name': 'C', 'link':['All']}

我想找到所有文件,其中字段'link'的类型为“string”,值为'All'。我的意思是我不是在寻找数组类型的链接。 所以我想看看下面的结果:

{'name': 'A', 'link':'All'}

我尝试了下面的查询,但它不起作用,它返回所有文件,其中'All'的任何一种类型是字符串或数组。

{link:'All',link:{$type:"string"}}

实际上$ type运算符在数组字段内部而不是字段本身。

1 个答案:

答案 0 :(得分:2)

这可能适合你,

通过检查每个链接值的第一个元素来避免数组对象。

db.getCollection('yourCollection').find({'link.0': {$exists: false}, link: {$type: 2}})

type“2” - 表示字符串。