01.MongoDB数据类型
1.1 MongoDB支持以下数据类型
-
String(字符串)
: mongodb中的字符串是UTF-8有效的。 -
Integer(整数)
: 存储数值。整数可以是32位或64位,具体取决于您的服务器。 -
Boolean(布尔)
: 存储布尔(true/false)值。 -
Double(双精度)
: 存储浮点值。 -
Min/ Max keys(最小/最大键)
: 将值与最低和最高BSON元素进行比较。 -
Arrays(数组)
: 将数组或列表或多个值存储到一个键中。 -
Timestamp(时间戳)
: 存储时间戳。 -
Object(对象)
: 嵌入式文档。 -
Null (空值)
: 存储Null值。 -
Symbol(符号)
: 与字符串相同,用于具有特定符号类型的语言。 -
Date(日期)
: 以UNIX时间格式存储当前日期或时间。 -
Object ID(对象ID)
: 存储文档ID。 -
Binary data(二进制数据)
: 存储二进制数据。 -
Code(代码): 将shell代码存储到文档中。
-
Regular expression(正则表达式): 存储正则表达式
1.2 MongoDB常用类型
-
1、日期类型:date
- 使用不同方式来创建一个date
Date()
:表示当前时间,插入的是一个字符串类型new Date()
:插入的是isodate类型,表示的是格林威治标准时间ISODate()
: 类似new Date()
-
2、ObjectId
当插入数据的时候,自动生成一个字段: _id ---> 相当于主键
ObjectId
是一个12字节的BSON类型的字符串
-
3、表示数字的时候,注意的问题
NumberInt
: 表示32位整数NumberDecimal
:支持34位小数Double
:如果没有指定数字类型默认是double
02.测试
2.1 创建测试数据
db.test2.insertOne({ "_id" : 1, "val" : NumberDecimal( "9.99" ), "description" : "Decimal" })
db.test2.insertOne({ "_id" : 2, "val" : 9.99, "description" : "Double" })
db.test2.insertOne({ "_id" : 3, "val" : 10, "description" : "Double" })
db.test2.insertOne({ "_id" : 4, "val" : NumberLong(10), "description" : "Long" })
db.test2.insertOne({ "_id" : 5, "val" : NumberDecimal( "10.0" ), "description" : "Decimal" })
2.2 查询测试
# 1、查询表中所有数据
> db.test2.find()
# 2、数字不指定数据类型时默认是double类型,所以只能查到一条
> db.test2.find({"val":9.99})
{ "_id" : 2, "val" : 9.99, "description" : "Double" }
# 3、类型为NumberDecimal,值为9.99的数据
> db.test2.find({"val":NumberDecimal("9.99")})
{ "_id" : 1, "val" : NumberDecimal("9.99"), "description" : "Decimal" }
# 4、对于整数10的匹配,将匹配所有的数据类型是10
> db.test2.find({"val":10})
{ "_id" : 3, "val" : 10, "description" : "Double" }
{ "_id" : 4, "val" : NumberLong(10), "description" : "Long" }
{ "_id" : 5, "val" : NumberDecimal("10.0"), "description" : "Decimal" }
# 5、对于整数10的匹配,将匹配所有的数据类型是10
> db.test2.find({"val":NumberDecimal("10")})
{ "_id" : 3, "val" : 10, "description" : "Double" }
{ "_id" : 4, "val" : NumberLong(10), "description" : "Long" }
{ "_id" : 5, "val" : NumberDecimal("10.0"), "description" : "Decimal" }
__END__