从MongoDB 3.2,它使用WiredTiger作为其默认的存储引擎,也可以通过以下语句查询默认的存储引擎
1.mongodb入门命令
show databases/dbs 查看当前数据库 (test(测试库)、admin(管理员库)、local(当前库))
show tables/collections 查看表
db.help() 查看帮助信息
2.如何创建数据库
mongodb的库是隐式创建的,你可以use一个不存在的库,然后在该库下创建表即可创建库
3.插入数据
db.user.insert({name:'wangwu',age:22})
4.查找数据
db.user.find()
格式化输出
db.user.find().pretty()
注:如果不指定_id的话,系统自动生成id(id是主键)
DBQuery.shellBatchSize = 10; 设置查询出显示的结果集,默认显示20条
db.user.insert({_id:2,name:'lisi',age:12})
db.user.insert({_id:3,name:'hmm',hobby:['basketball','football'],intro:{title:'My intro',content:'from china'}}) #复合文档
也可以隐式的创建表
db.goods.insert({_id:1,name:'NOKIAN71',price:1200})
5.删除表
use wang
db.goods.drop()
6.删除数据库
db.dropDatabase()
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")})
插入当前时间的时候,我们有两种调用方式:Date() 和 new Date()
db.test9.insert({mt:new Date()})
db.test9.insert({mt:Date()})
对比后我们会发现有如下几点:
(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()
将ISODate格式的时间转换成当前时间toLocaleString()
a=db.test9.findOne().mt.toLocaleString()
mongoDB中时间戳Timestamps
var a = new Timestamp();
db.test.insert( { ts: a } );
db.test.find()
可以将输出内容通过javascript转化成日期格式
var timestamp3 = 1476171408;
var unixTimestamp = new Date(timestamp3 * 1000)
newDate.toLocaleDateString() + ' '+ newDate.toLocaleTimeString()
8.查询值为Null或不存在的字段
MongoDB中不同的运算符对待 null 值不一样.
db.users.insert(
[
{ "_id" : 900, "name" : null },
{ "_id" : 901 }
]
)
查找name为null的记录
db.users.find( { name: null } )
我们只需要查找name字段为null的数据,而不是将没有name字段的数据也查询出来,可以通过以下方式进行查询
a.如果使用稀疏索引会导致一个不完整的结果,那么,除非 hint() 显示地指定了该索引,否则MongoDB将不会使用这个索引
b.类型筛查
{ name : { $type: 10 } } 查询 仅仅 匹配那些包含值是 null 的 name 字段的文档,亦即 条目 字段的值是BSON类型中的 Null (即 10 )
db.users.find( { name : { $type: 10 } } )
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 } } )