考虑以下文件:
{'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运算符在数组字段内部而不是字段本身。
答案 0 :(得分:2)
这可能适合你,
通过检查每个链接值的第一个元素来避免数组对象。
db.getCollection('yourCollection').find({'link.0': {$exists: false}, link: {$type: 2}})
type“2” - 表示字符串。