MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构很是松散,是相似json的bson格式,所以能够存储比较复杂的数据类型。Mongo最大的特色是他支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引。html
关于mongodb的安装过程,网上已有不少资料,这里再也不多说,在此记录一下我遇到过的mongodb的用法,以备往后翻阅。mongodb
1、基础操做。shell
一、链接到mongodb数据库数据库
mongo #在命令行直接进入mongodb mongo 127.0.0.1 #链接到ip为127.0.0.1的mongodb mongo 127.0.0.1 27017 #链接到ip为127.0.0.1的mongodb mongo --port 27017 --host 127.0.0.1
链接成功后,会出现以下结果,默认链接到mongodb一个名为test的测试数据库json
MongoDB shell version: 2.6.0 connecting to: 127.0.0.1:27017/test
二、基本的系统操做,在mongodb里,db为数据库,collection为一个集合,至关于关系型数据库中的table数据结构
show dbs #查看当前全部的数据库 user xx #选中名为xx的数据库 db #查看当前选中数据库的信息 show collections #查看当前数据库下全部的collections
2、经常使用的查询操做。测试
在mongodb里,全部的操做均以db 命令开头,后面跟着对应操做的collectionspa
一、建立数据库,若是如今要建立一个名为example的数据库,可使用 use example的命令命令行
use example switched to db example
注意,如今数据库尚未真正的建立,使用show dbs命令是没法看到example的,这是由于目前example数据库内尚未任何集合(collection),没有任何数据,只有等建立collection插入数据后,数据库才会被建立。日志
接下来建立一个名为users的collection,而后插入数据,完成后,example数据库才算是真正的建立成功,使用show dbs能够看到。
db.users.insert({'name':'john'}) WriteResult({ "nInserted" : 1 })
在建立成功后,系统会默认建立一个system_indexs的集合(系统索引),在example数据库使用show collections命令便可看到。
对collection的一些操做,同传统关系型数据库同样,能够对mongodb里面的数据按照各类查询,包括等于、大于、小于、包含、不包含 等,按照字段进行排序等。
db.users.find() #查询全部数据 db.users.find({'name':'john'}) #查询全部name为john的数据,里面可使用任意条件 db.users.findOne() #查询一条数据 db.users.findOne({'age':'18'}) #使用条件查询一条数据 db.users.find({'age':'18'}).limit(1) #使用条件查询一条数据 db.users.find().sort({'name':1}) #对查询结果按照name字段正序排序 db.users.find().sort({'name':-1}) #对查询结果按照name字段倒序排序 db.users.find({'name':{$gt:'jack'}}) #查询name字段大于jack的数据
还可使用in或者or查询
db.users.find({'name':{'$in':['john','jack']}}) #查询name为jack 或者john的数据 db.users.find({'name':{'$or':['john','jack']}}) db.users.find({'name':{'$ne':'john'}}) #查询name不为john的数据
在不须要查询全部字段的时候,能够查询某些指定的字段,或者过滤某些指定的字段。
db.users.find() #默认状况下是返回全部数据的db.users.find({},{'name':0}) #在返回结果中过滤掉name字段db.users.find({},{'name':1}) #在返回结果中只保留字段(注:_id字段是默认显示的,即便设置了其余字段为1的状况,_id字段也会显示) { "_id" : ObjectId("53a53e40698c51ca0490f30e"), "name" : "john" } { "_id" : ObjectId("53a53f84698c51ca0490f30f"), "name" : "jack" } db.users.find({},{'name':1,'_id':0}) #在返回结果中只保留name字段,而且过滤掉_id字段 { "name" : "john" } { "name" : "jack" }
3、其余操做(删除修改等,之后再说吧,由于是作的日志分析,暂时没这些需求,主要是查询,:) 若是有了之后再说吧)
附:mongodb与关系型数据库的CRUD对照表 Mongodb的基本查询操做