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__