MongoDB 是由C++語言編寫的,是基於分散式檔案儲存的開源資料庫系統。在高負載的情況下,增加更多的節點,可以保證伺服器效能。 MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。
一、增刪改查
查看目前資料庫中所有的集合,使用指令
show collections 或使用 show tables
建立集合有兩種方式,顯示建立和隱式建立
显示创建可以使用命令 db.createCollection(“集合名称") 隐式创建可以使用命令 db.集合名称.insert({}), 指创建集合并同时向集合中插入数据, 例如:db.customer.insert({name:”jack”})
為集合新增文件
使用指令db.集合名稱.insert({}),例如:
db.user1.insert({name:”jack”,age:20})
#刪除集合中的文件
使用命令 db.集合名称.remove({删除条件}), 不加删除条件为删除集合中的所有文档: 例如,删除c1集合中的所有文档 db.c1.remove() 删除c1集合中name为user1的文档 db.c1.remove({name:”user1”})
查詢集合中的文檔
db.集合名称.find({条件}) 或者使用 db.集合名称.findOne() 查询第一个文档
查詢集合中的文檔,傳回某些特定的鍵值
除了查詢表達式以外,MongoDB也支援一些額外的參數選項。
如果僅僅只想傳回某些特定的欄位值:
傳回除了age欄位外的所有欄位
db.user.find({},{age:0});
#回傳tags=tennis除了comments的所有欄位
db.posts.find({tags:'tennis'},{comments:0});
傳回userid=16的name欄位
db.user.find({userid:16},{name:1});
{"_id":16,"name":"user16"}
傳回x=john的所有z字段
db.things.find({x:"john"},{z:1});
查詢集合中的文檔,使用條件表達式(<, <=, > ;, >=,!=)
//大於: field > 值
db.collection.find({field:{$gt:value}});
db.collection.find({field:{$lt:value}});
db.collection.find ({field:{$gte:value}});
db.collection.find({field:{$lte:value}});
db.collection.find({field:{$ne:value}});
#
db.customer.count(); db.customer.find().count(); db.customer.find({age:{$lt:5}}).count(); db.customer.find().sort({age:1}); 降序-1 db.customer.find().skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3).count(); db.customer.find().sort({age:-1}).skip(2).limit(3).count(0); db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);
$all主要用來查詢陣列中的包含關係,
查詢條件中只要有一個不包含就不回傳
關係型資料庫中的IN
$nin,與$in相反$or,相當於關係型資料庫中的OR,表示或的關係,例如查詢name為user2或age為3的文檔,指令為:
db.customer .find({$or:[{name:”user2”},{age:3}]})
db.customer.find({$nor:[{name:”user2”},{age:3}]})
db.customer.find({name:{$exists:1}})
$exists:1表示真,指存在
$exists:0表示假,指不存在
更新集合中的文件
語法:db.collection.update(criteria,objNew,upsert,multi)參數說明:
criteria:用於設定查詢條件的
物件
objNew:用於設定更新內容的物件upsert:如果記錄已經存在,更新它,否則新增一個記錄,取值為0或1
multi:如果有多個符合條件的記錄,是否全部更新,取值為0或1
注意:預設情況下,只會更新第一個符合條件的記錄
db.collection. update(criteria,objNew,0,1)
將集合中name為user1的文檔改為name為jack:
$set 用來指定一個鍵的值,如果這個鍵不存在,則建立它。例如:
db.c1.update({name:”user1”},{$set:{address:”bj”}},0, 1)
將name為user1的文件修改address為tj,
其它
鍵值對不變,指令為:db.c1.update({name:”user1”},{ $set:{address:”tj”}},0,1)
使用$inc 將集合中name為user1的age加1,其它鍵不變,
db.c1.update({name:"user1"},{$inc:{age:1}})
$unset 用來刪除某個鍵
db.c1.update({name:”user1”},{$unset:{address:1}},0,1)
索引就是用來加速查詢的。資料庫索引與書籍的索引類似:有了索引就不需要翻遍整本書,資料庫則可以直接在索引中查找,使得查找速度能提高幾個數量級。在索引中找到條目以後,就可以直接跳到目標文件的位置。 普通索引: 唯一索引: 三、固定集合(capped collection) db.createCollection(“collectionName”,{capped:true,size:100000,max:100}); 四、備份(mongodump)和還原(mongorestore) mongodump -h dbhost -d dbname -o dbdirectory mongorestore -h dbhost -d dbname -directoryperdb dbdirectory 五、導入( mongoimport)和匯出(mongoexport) mongoexport -h dbhost -d dbname -c collectionName -o output mongoexport -h localhost:27017 -d test -c c4 -o d:/beifeng/c4.txt mongoimport -h dbhost -d dbname -c collectionname 檔案的位址... mongoimport -h localhost:27017 -d test -c cctv d:/beifeng/c4.txt
建立:db.collection.ensureIndex({key:1})
查看關於索引的相關資訊:db.collection.stats()
查看查詢使用索引的情況:db.collection.find({key:value}).explain()
刪除索引:db.collection.dropIndex({key:1})
刪除集合,也會將集合中的索引全部刪除
建立:db.collection.ensureIndex({key:1},{unique:true})
查看關於索引的相關資訊:db.collection.stats( )
查看查詢使用索引的情況:db.collection.find({key:value}).explain()
刪除索引:db.collection.dropIndex({key:1})
刪除集合,也會將集合中的索引全部刪除
size指定集合大小,單位為KB,max指定文件的數量
-h:MongDB所在伺服器位址,例如:127.0.0.1,當然也可以指定連接埠號碼:127.0.0.1:27017
-d:需要備份的資料庫實例,例如:test
-o:備份的資料存放位置,例如:c:\ data\dump,當然目錄需要提
前建立,在備份完成後,系統自動在dump目錄下建立一個test目錄,這個
目錄裡面存放該資料庫實例的備份資料。
-h:MongoDB所在伺服器位址
-d:需要復原的資料庫實例,例如: test,當然這個名稱也可以和備份時候的不一樣,例如test2
-directoryperdb:備份資料所在位置,例如:c:\data\dump\test
參數說明:
-h 資料庫位址
-d 指明使用的函式庫
-c 指明要匯出的集合
-o 指明要匯出的檔案名稱
參數說明:
-h 資料庫位址
-d 指明使用的函式庫
-c 指明要匯入的集合
本地的檔案位址...
以上是詳細介紹MongoDB常用的操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!