Mongodb基本的查询操做

     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的基本查询操做

相关文章
相关标签/搜索