从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 } } )