Mongodb基本的查询操作

     MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

  关于mongodb的安装过程,网上已有很多资料,这里不再多说,在此记录一下我遇到过的mongodb的用法,以备日后翻阅。

一、基础操作。

  1、连接到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的测试数据库

MongoDB shell version: 2.6.0
connecting to: 127.0.0.1:27017/test

  2、基本的系统操作,在mongodb里,db为数据库,collection为一个集合,相当于关系型数据库中的table

show dbs #查看当前所有的数据库
user xx #选中名为xx的数据库
db #查看当前选中数据库的信息
show collections #查看当前数据库下所有的collections

二、常用的查询操作。

  在mongodb里,所有的操作均以db 命令开头,后面跟着对应操作的collection

  1、创建数据库,如果现在要创建一个名为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" }

 

 三、其他操作(删除修改等,以后再说吧,因为是做的日志分析,暂时没这些需求,主要是查询,:) 如果有了以后再说吧)

  附:mongodb与关系型数据库的CRUD对照表 Mongodb的基本查询操作

  

     

 

 

posted @ 2014-06-21 17:05  北羽  阅读(399)  评论(0编辑  收藏  举报