mongodb基本操作命令及数据类型(一)

时间:2022-11-11 11:19:23

从MongoDB 3.2,它使用WiredTiger作为其默认的存储引擎,也可以通过以下语句查询默认的存储引擎

mongodb基本操作命令及数据类型(一)

1.mongodb入门命令

show databases/dbs       查看当前数据库 (test(测试库)、admin(管理员库)、local(当前库))
show tables/collections 查看表
db.help() 查看帮助信息

2.如何创建数据库

mongodb的库是隐式创建的,你可以use一个不存在的库,然后在该库下创建表即可创建库

mongodb基本操作命令及数据类型(一)

3.插入数据

db.user.insert({name:'wangwu',age:22})

4.查找数据

db.user.find()

mongodb基本操作命令及数据类型(一)

格式化输出

db.user.find().pretty()

mongodb基本操作命令及数据类型(一)

注:如果不指定_id的话,系统自动生成id(id是主键)

DBQuery.shellBatchSize = 10; 设置查询出显示的结果集,默认显示20条

mongodb基本操作命令及数据类型(一)

db.user.insert({_id:2,name:'lisi',age:12}) 

mongodb基本操作命令及数据类型(一)

db.user.insert({_id:3,name:'hmm',hobby:['basketball','football'],intro:{title:'My intro',content:'from china'}})   #复合文档

mongodb基本操作命令及数据类型(一)

也可以隐式的创建表

db.goods.insert({_id:1,name:'NOKIAN71',price:1200})

mongodb基本操作命令及数据类型(一)

5.删除表

use wang
db.goods.drop()

mongodb基本操作命令及数据类型(一)

6.删除数据库

db.dropDatabase()

mongodb基本操作命令及数据类型(一)

7.日期类型

日期类型处理上需要注意以下几点:

(1)是否和时区有关

(2)格式之间的区别

(3)和字符串之间的关系

mongo中的日期类型,使用的是iso格式,通常我们使用ISODate(***)来表示

db.test9.insert({mt:ISODate("19920913")})
db.test9.insert({mt:ISODate("19920913 074848")})
db.test9.insert({mt:ISODate("1992-09-13 07:48:48")})
db.test9.insert({mt:ISODate("1992-09-13 13:48:48")})

mongodb基本操作命令及数据类型(一)

插入当前时间的时候,我们有两种调用方式:Date() 和 new Date()

db.test9.insert({mt:new Date()})
db.test9.insert({mt:Date()})

mongodb基本操作命令及数据类型(一)

对比后我们会发现有如下几点:

(1)使用new Date()插入的日期是符合ISODate格式的,而且这个时间比当前时间早8小时

(2)使用Date()插入的日期是一个字符串,但是它是当前时间

(3)mongo中的date类型是以UTC来存储的,它等于GMT,也就是格林尼治时间,也就是比我们当前的时间要少8小时

但是当我们获取时间的时候需要注意以下几点:

var x=db.test9.findOne({_id:ObjectId("57f8957f14b8a3114ae87150")}).mt
x.getMonth()+1
x.getHours()
x.getDate()

mongodb基本操作命令及数据类型(一)

将ISODate格式的时间转换成当前时间toLocaleString()

mongodb基本操作命令及数据类型(一)

a=db.test9.findOne().mt.toLocaleString()

mongodb基本操作命令及数据类型(一)

mongoDB中时间戳Timestamps   

var a = new Timestamp();
db.test.insert( { ts: a } );
db.test.find()

mongodb基本操作命令及数据类型(一)

可以将输出内容通过javascript转化成日期格式

var timestamp3 = 1476171408;
var unixTimestamp = new Date(timestamp3 * 1000)
newDate.toLocaleDateString() + ' '+ newDate.toLocaleTimeString()

mongodb基本操作命令及数据类型(一)

8.查询值为Null或不存在的字段

MongoDB中不同的运算符对待 null 值不一样.  

db.users.insert(
[
{ "_id" : 900, "name" : null },
{ "_id" : 901 }
]
)

查找name为null的记录

db.users.find( { name: null } )

mongodb基本操作命令及数据类型(一)

我们只需要查找name字段为null的数据,而不是将没有name字段的数据也查询出来,可以通过以下方式进行查询

a.如果使用稀疏索引会导致一个不完整的结果,那么,除非 hint() 显示地指定了该索引,否则MongoDB将不会使用这个索引

b.类型筛查

{ name : { $type: 10 } } 查询 仅仅 匹配那些包含值是 null 的 name 字段的文档,亦即 条目 字段的值是BSON类型中的 Null (即 10 )

db.users.find( { name : { $type: 10 } } )

mongodb基本操作命令及数据类型(一)

Type

Number

Alias

Notes

Double

1

“double”

 

String

2

“string”

 

Object

3

“object”

 

Array

4

“array”

 

Binary data

5

“binData”

 

Undefined

6

“undefined”

Deprecated.

ObjectId

7

“objectId”

 

Boolean

8

“bool”

 

Date

9

“date”

 

Null

10

“null”

 

Regular Expression

11

“regex”

 

DBPointer

12

“dbPointer”

 

JavaScript

13

“javascript”

 

Symbol

14

“symbol”

 

JavaScript (with scope)

15

“javascriptWithScope”

 

32-bit integer

16

“int”

 

Timestamp

17

“timestamp”

 

64-bit integer

18

“long”

 

Min key

-1

“minKey”

 

Max key

127

“maxKey”

c.存在性筛查

该查询只返回那些 没有 包含 条目 字段的文档($exists  false 没有包含; true  包含)

db.users.find( { name : { $exists: false } } )

mongodb基本操作命令及数据类型(一)