考虑以下文档:
{'name': 'A', 'link':'All'},
{'name': 'B', 'link':['All','1','2']},
{'name': 'C', 'link':['All']}
我想查找具有“链接”字段、类型为“字符串”且值为“全部”的所有文档。我的意思是我不是在寻找数组类型的链接。 所以我想看到下面的结果:
{'name': 'A', 'link':'All'}
我尝试了下面的查询,但它不起作用,它返回所有类型为字符串或数组的“All”文档。
{link:'All',link:{$type:"string"}}
实际上 $type 运算符查看数组字段内部而不是字段本身。
最佳答案
这可能适合你,
通过检查每个链接值的第一个元素来避免数组对象。
db.getCollection('yourCollection').find({'link.0': {$exists: false}, link: {$type: 2}})
类型“2” - 表示字符串。
关于arrays - 如何查找其特定字段不是数组类型的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40374410/