在MQL中,也可以支持我們搜索數(shù)組中的對象:
-- 填充數(shù)據(jù)db.games.insertOne({"title":"Winning Eleven 2021","versions":[{"language":"English", "code":"US", "market":"NorthAmerica"},{"language":"Chinese", "code":"CN", "market":"China"},{"language":"Japanese", "code":"JP", "market":"Japan"}]});-- 搜索子對象的market是Japan的db.games.find({"versions.market":"Japan"});-- 搜索子對象的market是China且code是CN的db.games.find({"versions.market":"China","versions.code":"CN"});-- 使用elemMatch:必須同一個子對象滿足多個條件db.games.find({"versions":{$elemMatch:{"market":"China","code":"CN"}}});查詢操作(find)控制返回字段
在MQL中,find操作可以指定只返回指定的字段,即所謂的投影操作(projection),需要注意的是:_id字段必須明確指明不返回,否則默認會返回 。操作實例如下:
-- 指明不返回_id,且只返回name字段db.teams.find({"members":{$gte:10}},{"_id":0, name:1});-- 不指明是否返回_id則默認返回,且只返回name字段db.teams.find({"members":{$gte:10}},{name:1});-- 它其實等價于db.teams.find({"members":{$gte:10}},{"_id":1, name:1});3 update操作
在MQL中,update操作的格式為:db.<collectionName>.update 。
假設(shè)這里要實現(xiàn)更新yzw-football-team的members為22人:
db.teams.updateOne({name:"yzw-football-team"},{"$set":{members:29}});需要注意的是:使用 updateOne 無論條件匹配多少個記錄,它都只會更新第一條 。有點類似于.NET中的FirstOrDefault()方法 。
同時,MQL還提供了 updateMany 方法以支持同時更新多個滿足條件的文檔,例如這里將所有人數(shù)為22人的team的名字都改為yzw-football-team:
db.teams.updateMany({members:22},{"$set":{name:"yzw-football-team"}});除此之外,還可以使用 update 來更新數(shù)組:
使用$push即可增加一個對象到數(shù)組底部:
db.games.update({title:"Winning Eleven 2021"},{"$push":{ versions:{"language": "Korean","code": "KO", "market": "South Korea"} }});此外,還可以使用$pushAll即可增加多個對象到數(shù)組底部,使用$pop來從數(shù)組底部刪除一個對象,使用$addToSet來實現(xiàn)如果不存在則新增一個值到數(shù)組等等 。這里,就不再展示示例了 。
4 remove操作
在MQL中,刪除文檔的命令格式為:db.<collectionName>.remove,一般情況下它需要配合查詢條件來使用,否則它會刪除所有文檔(慎用) 。
remove操作示例:
db.teams.remove({name:"yzw-football-team"}); // 刪除name為yzw-football-team的文檔db.teams.remove({members:{"$lt":22}}); // 刪除members小于22人的文檔db.teams.remove({}); // 刪除所有文檔,慎用5 drop操作
在MQL中,刪除集合的命令格式為:db.<CollectionName>.drop() 。
使用此命令,集合中的全部文檔都會被刪除,集合相關(guān)的索引也會被刪除 。
例如,我們將teams這個集合刪除:
db.teams.drop(); // 慎用那么,如何刪除某個數(shù)據(jù)庫呢?可以使用 db.dropDatabase() 來刪除數(shù)據(jù)庫,需要注意的是 數(shù)據(jù)庫響應(yīng)文件也會被刪除,磁盤空間會得到釋放 。
use studentsDBdb.dropDatabase(); // 慎用總結(jié)
本文總結(jié)了MongoDB的基本操作,包括了insert、find、remove、update和drop 。學會這些基本操作,我們就可以應(yīng)對大部分的常見使用場景了 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- mongodb是nosql數(shù)據(jù)庫嗎 3 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 5 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 6 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 7 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 8 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 9 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 11 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 12 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 14 NoSQL | MongoDB入門實戰(zhàn)教程
