MongoDB $type 操作符

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 10月更文挑战第16天

在 MongoDB 中,$type 操作符用于查询具有指定类型的字段的文档。

MongoDB 的 $type 操作符用于查询字段的 BSON 数据类型。

它允许您指定一个或多个类型,并返回匹配这些类型的文档。

以下是 $type 操作符的详细介绍和示例。

语法:

db.collection.find({ field: { $type: <type> } })

  • field:要检查类型的字段。
  • type:指定的 BSON 类型,可以是类型的数字代码或类型名称的字符串。

BSON 类型

以下是常见的 BSON 类型及其对应的数字代码和字符串名称:

类型代码 类型名称
1 double
2 string
3 object
4 array
5 binData
6 undefined
7 objectId
8 bool
9 date
10 null
11 regex
12 dbPointer
13 javascript
14 symbol
15 javascriptWithScope
16 int
17 timestamp
18 long
19 decimal
255 minKey
127 maxKey

实例

查找字段类型为字符串的文档:

db.myCollection.find({ fieldName: { $type: "string" } })

或使用类型代码:

db.myCollection.find({ fieldName: { $type: 2 } })

查找字段类型为数字的文档,例如,查找 age 字段类型为整数的文档:

db.myCollection.find({ age: { $type: "int" } })

或使用类型代码:

db.myCollection.find({ age: { $type: 16 } })

查找字段类型为布尔值的文档:

db.myCollection.find({ isActive: { $type: "bool" } })

或使用类型代码:

db.myCollection.find({ isActive: { $type: 8 } })

查找字段类型为日期的文档:

db.myCollection.find({ createdAt: { $type: "date" } })

或使用类型代码:

db.myCollection.find({ createdAt: { $type: 9 } })

查找字段类型为多种类型的文档,例如,查找 value 字段类型为字符串或整数的文档:

db.myCollection.find({ value: { $type: ["string", "int"] } })

或使用类型代码:

db.myCollection.find({ value: { $type: [2, 16] } })

查找 details 字段类型为对象,并且 score 字段类型为双精度浮点数的文档:

实例

db.myCollection.find({

   $and: [

       { details: { $type: "object" } },

       { score: { $type: "double" } }

   ]

})

或使用类型代码:

实例

db.myCollection.find({

   $and: [

       { details: { $type: 3 } },

       { score: { $type: 1 } }

   ]

})

通过使用 $type 操作符,您可以精确地查询文档中特定字段的数据类型,从而进行更细粒度的数据过滤和管理。


更多实例

我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。

简单的集合"col":

>db.col.insert({

   title: 'PHP 教程', 

   description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',

   by: '菜鸟教程',

   url: 'http://www.runoob.com',

   tags: ['php'],

   likes: 200

})


>db.col.insert({title: 'Java 教程', 

   description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',

   by: '菜鸟教程',

   url: 'http://www.runoob.com',

   tags: ['java'],

   likes: 150

})


>db.col.insert({title: 'MongoDB 教程', 

   description: 'MongoDB 是一个 Nosql 数据库',

   by: '菜鸟教程',

   url: 'http://www.runoob.com',

   tags: ['mongodb'],

   likes: 100

})

使用find()命令查看数据:

> db.col.find()

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }

{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }

{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }


MongoDB 操作符 - $type 实例

如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({"title" : {$type : 2}})

db.col.find({"title" : {$type : 'string'}})

输出结果为:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }

{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }

{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "ht

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
29天前
|
NoSQL JavaScript 前端开发
MongoDB 条件操作符
10月更文挑战第15天
25 1
|
5月前
|
NoSQL 数据挖掘 MongoDB
深入了解MongoDB:利用$type操作符轻松操控数据类型
深入了解MongoDB:利用$type操作符轻松操控数据类型
|
5月前
|
NoSQL BI MongoDB
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
121 1
|
存储 NoSQL MongoDB
MongoDB-数据类型转换操作符
?> MongoDB 对于文档的格式并没有强制性的要求, 同一个集合中存储的文档, 字段的个数和数据类型都可以不同, 对与文档的格式没有强制性的要求是 MongoDB 的一大优势, 但是同时也增加了数据消费端的使用难度, 因为我们在使用数据的时候, 有可能同一个字段取出来的数据类型是不同的, 这样非常不利于我们后续操作, 所以也正是因为如此, MongoDB 在 4.0 中 推出了 $convert 数据类型转换操作符, 通过 $convert 数据类型转换操作符, 我们可以将不同的数据类型转换成相同的数据类型, 以便于后续我们在使用数据的过程中能够统一对数据进行处理
160 0
|
NoSQL Java MongoDB
MongoDB 条件操作符
MongoDB 条件操作符
103 0
|
NoSQL 数据库 MongoDB
【mongoDB查询进阶】聚合管道(二) -- 阶段操作符
https://segmentfault.com/a/1190000010826809 什么是管道操作符(Aggregation Pipeline Operators) mongoDB有4类操作符用于文档的操作,例如find查询里面会用到的$gte,$in等。
1306 0
|
NoSQL 机器学习/深度学习 存储
【mongoDB查询进阶】聚合管道(三)--表达式操作符
https://segmentfault.com/a/1190000010910985 管道操作符的分类 管道操作符可以分为三类: 阶段操作符(Stage Operators) 表达式操作符(Expression Operators)--主要用于$project 累加器(Accumulators)...
1158 0
|
NoSQL Redis MongoDB
[MongoDB]条件操作符
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52318394 MongoDB支持大量的条件操作符用于过滤结果。
814 0
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
22天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。