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

相關文章
相關標籤/搜索