1.MongoDB的插入文檔
MongoDB使用insert()和save()插入文檔數(shù)據(jù)
插入語(yǔ)法
db.databse_name.insert(content)
實(shí)例
>db.sjk.insert({
title:"數(shù)據(jù)庫(kù)",
author:"Larry Ellison",
content:"數(shù)據(jù)庫(kù)知識(shí)"
})
如果我們創(chuàng)建的集合sjk鸥鹉,不在相對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi)系統(tǒng)會(huì)自動(dòng)創(chuàng)建
查看我們我們插入的內(nèi)容
>db.sjk.find()
>db.sjk.find().pretty()
db.sjk.find().pretty(), pretty()函數(shù)就是為了讓所查看的數(shù)據(jù)庫(kù)內(nèi)容更美觀的展現(xiàn)出來(lái)
2.更新數(shù)據(jù)庫(kù)
MongoDB更新數(shù)據(jù)庫(kù)的語(yǔ)法
db.database_name.update(content)
update() 方法
update() 方法用于更新已存在的文檔循诉。語(yǔ)法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
參數(shù)說(shuō)明:
- query : update的查詢(xún)條件,類(lèi)似sql update查詢(xún)內(nèi)where后面的享甸。
- update : update的對(duì)象和一些更新的操作符(如$,$inc...)等嗽冒,也可以理解為sql update查詢(xún)內(nèi)set后面的
- upsert : 可選,這個(gè)參數(shù)的意思是就珠,如果不存在update的記錄,是否插入objNew,true為插入醒颖,默認(rèn)是false妻怎,不插入。
- multi : 可選泞歉,mongodb 默認(rèn)是false,只更新找到的第一條記錄逼侦,如果這個(gè)參數(shù)為true,就把按條件查出來(lái)多條記錄全部更新。
- writeConcern :可選腰耙,拋出異常的級(jí)別榛丢。
實(shí)例
db.sjk.insert({
name:"張三",
age:15,
sex:"女"
})
接下來(lái)用update更新操作
db.sjk.update({"name":張三},{$set:{"age":20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 輸出信息
以上語(yǔ)句只會(huì)修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔挺庞,則需要設(shè)置 multi 參數(shù)為 true晰赞。
db.col.update({"name":"張三"},{$set:{"age":20}},{multi:true})
更多實(shí)例
只更新第一條記錄:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一條:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加進(jìn)去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一條記錄:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
3.刪除數(shù)據(jù)庫(kù)
remove() 方法的基本語(yǔ)法格式如下所示:
db.collection.remove(
<query>,
<justOne>
)
如果你的 MongoDB 是 2.6 版本以后的,語(yǔ)法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
參數(shù)說(shuō)明:
query :(可選)刪除的文檔的條件。
justOne : (可選)如果設(shè)為 true 或 1掖鱼,則只刪除一個(gè)文檔然走。
-
writeConcern :(可選)拋出異常的級(jí)別。
db.col.remove({"name":"張三"}) WriteResult({ "nRemoved" : 1 }) # 刪除了兩條數(shù)據(jù) db.col.find() …… # 沒(méi)有數(shù)據(jù)
如果你只想刪除第一條找到的記錄可以設(shè)置 justOne 為 1戏挡,如下所示:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想刪除所有數(shù)據(jù)芍瑞,可以使用以下方式(類(lèi)似常規(guī) SQL 的 truncate 命令):
>db.col.remove({})
>db.col.find()
>
4.查詢(xún)數(shù)據(jù)
MongoDB 查詢(xún)文檔使用 find() 方法。
find() 方法以非結(jié)構(gòu)化的方式來(lái)顯示所有文檔褐墅。
語(yǔ)法
MongoDB 查詢(xún)數(shù)據(jù)的語(yǔ)法格式如下:
db.collection.find(query, projection)
query :可選拆檬,使用查詢(xún)操作符指定查詢(xún)條件
projection :可選,使用投影操作符指定返回的鍵妥凳。查詢(xún)時(shí)返回文檔中所有鍵值秩仆, 只需省略該參數(shù)即可(默認(rèn)省略)。
如果你需要以易讀的方式來(lái)讀取數(shù)據(jù)猾封,可以使用 pretty() 方法澄耍,語(yǔ)法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式來(lái)顯示所有文檔。
實(shí)例
以下實(shí)例我們查詢(xún)了集合 col 中的數(shù)據(jù):
db.col.find().pretty()
{
"name":"張三",
"age":15,
"sex":"女"
}
除了 find() 方法之外晌缘,還有一個(gè) findOne() 方法齐莲,它只返回一個(gè)文檔。
MongoDB 與 RDBMS Where 語(yǔ)句比較
如果你熟悉常規(guī)的 SQL 數(shù)據(jù)磷箕,通過(guò)下表可以更好的理解 MongoDB 的條件語(yǔ)句查詢(xún):
操作 格式 范例 RDBMS中的類(lèi)似語(yǔ)句
等于 {<key>:<value>} db.col.find({"by":"菜鳥(niǎo)教程"}).pretty() where by = '菜鳥(niǎo)教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個(gè)鍵(key)选酗,每個(gè)鍵(key)以逗號(hào)隔開(kāi),及常規(guī) SQL 的 AND 條件岳枷。
語(yǔ)法格式如下:
db.col.find({key1:value1, key2:value2}).pretty()
以上實(shí)例中類(lèi)似于 WHERE 語(yǔ)句:WHERE by='菜鳥(niǎo)教程' AND title='MongoDB 教程'
MongoDB OR 條件
MongoDB OR 條件語(yǔ)句使用了關(guān)鍵字 $or,語(yǔ)法格式如下:
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
實(shí)例
以下實(shí)例中芒填,我們演示了查詢(xún)鍵 by 值為 菜鳥(niǎo)教程 或鍵 title 值為 MongoDB 教程 的文檔。
db.col.find({$or:[{"by":"菜鳥(niǎo)教程"},{"title": "MongoDB 教程"}]}).pretty()
AND 和 OR 聯(lián)合使用
以下實(shí)例演示了 AND 和 OR 聯(lián)合使用空繁,類(lèi)似常規(guī) SQL 語(yǔ)句為: 'where likes>50 AND (by = '菜鳥(niǎo)教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥(niǎo)教程"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)",
"by" : "菜鳥(niǎo)教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
<本文參考菜鳥(niǎo)教程>