arrays - 如何查找其特定字段不是数组类型的文档?

标签 arrays mongodb

考虑以下文档:

{'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/

相关文章:

java - 在 java 中巧妙地将 byte[] 转换为 long[]

php - 从两个数组创建数组

java - Spring data mongodb并发获取和更新是线程安全的吗?

javascript - 将 100 万个对象发送到 Mongo DB,而不会耗尽内存

node.js - Mongojs 回调未返回

mongodb - MongoDB 范围查询中 $lt 和 $gt 的顺序

PHP 数组到 JavaScript 数组

c - 二维矩阵旋转与双线性插值

javascript - Redux:用于存储博客列表的数组或对象?

spring - 当事件配置文件为 "test"时使用嵌入式 MongoDB