最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用MongoDB操作文檔

 更新時(shí)間:2022年03月07日 15:39:22   作者:.NET開發(fā)菜鳥  
本文詳細(xì)講解了使用MongoDB操作文檔的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本篇文章中將講解如何使用MongoDB操作文檔。

文檔的數(shù)據(jù)結(jié)構(gòu)和JSON基本一致,所有存儲(chǔ)在集合中的數(shù)據(jù)都是BSON格式。BSON是一種類似json格式的一種二進(jìn)制形式的存儲(chǔ)格式,簡稱Binary JSON。

一、插入文檔

MongoDB使用insert()或save()方法向集合中插入文檔,語法如下:

db.COLLECTION_NAME.insert(document)

例如:以下文檔可以存儲(chǔ)在MongoDB的test數(shù)據(jù)庫的MongoDBTest集合中:

{"title" : "MongoDB", "description" : "mongoDB是一個(gè)NoSql數(shù)據(jù)庫", "tags" : "NoSql" }

1、使用insert()方法插入文檔

在上面的例子中,MongoDBTest是我們的集合名,如果該集合不在該數(shù)據(jù)庫中,MongoDB會(huì)自動(dòng)創(chuàng)建該集合并插入文檔。doc是定義的變量,可以以變量的形式插入集合。

查看已經(jīng)插入的文檔:

> db.MongoDBTest.insert(doc)
WriteResult({ "nInserted" : 1 })
> db.MongoDBTest.find()
{ "_id" : ObjectId("5a6f13e72d0b37669c5d2a78"), "title" : "MongoDB", "description" : "mongoDB是一個(gè)NoSql數(shù)據(jù)庫", "tags" : "NoSql" }
>

2、使用save()方法插入文檔

插入文檔也可以使用save()方法。如果不知道_id字段save()方法類似于insert()方法。如果指定_id字段,則會(huì)更新該_id的數(shù)據(jù)。

下面的例子表示使用save()命令更新數(shù)據(jù):

二、查詢文檔

MongoDB查詢文檔使用find()方法。

find()方法以非結(jié)構(gòu)化的方式來顯示所有文檔。

1、語法

MongoDB查詢數(shù)據(jù)的語法格式如下:

db.collection.find(query,projection)

參數(shù)說明:

  • query:可選參數(shù),使用查詢操作符指定查詢條件。
  • projection:可選參數(shù),使用投影操作符指定返回的鍵。如果查詢時(shí)要返回文檔中所有鍵值,只需省略該參數(shù)即可(默認(rèn)省略)。

如果你需要格式化讀取的數(shù)據(jù),可以使用pretty()方法,語法格式如下:

db.collection.find().pretty()

pretty()方法以格式化的方式來顯示所有文檔。

2、實(shí)例

例如:查詢Student集合中的所有文檔。

除了find()方法之外,還有一個(gè)findOne()方法,它只返回一個(gè)文檔。

MongoDB與RDBMS where語句比較

如果你熟悉常規(guī)的SQL數(shù)據(jù),通過下表可以更好的理解MongoDB的條件語句查詢:

操作格式范例RDBMS中的類似語句
等于{<key>:<value>}db.Student.find({"name":"張三"}).pretty()where name='張三'
小于{<key>:{$lt:<value>}}db.Student.find({"score":{$lt:"80"}}).pretty()where score<80
小于或等于{<key>:{$lte:<value>}}db.Student.find({"score":{$lte:"80"}}).pretty()where score<=80
大于{<key>:{$gt:<value>}}db.Student.find({"score":{$gt:"80"}}).pretty()where score>80
大于或等于{<key>:{$gte:<value>}}db.Student.find({"score":{$gte:"80"}}).pretty()where score>=80
不等于{<key>:{$ne:<value>}}db.Student.find({"score":{$ne:"80"}}).pretty()where score!=80

(1)查詢name是張三的學(xué)生

db.Student.find({"name":"張三"}).pretty()

查詢結(jié)果如下圖所示:

(2)查詢成績小于80的學(xué)生

db.Student.find({"score":{$lt:"80"}}).pretty()

查詢結(jié)果如下圖所示:

(3)查詢成績小于等于80的學(xué)生

db.Student.find({"score":{$lte:"80"}}).pretty()

查詢結(jié)果如下圖所示:

(4)查詢成績大于80分的學(xué)生

db.Student.find({"score":{$gt:"80"}}).pretty()

(5)查詢成績大于等于80分的學(xué)生

db.Student.find({"score":{$gte:"80"}}).pretty()

查詢結(jié)果如下圖所示:

(6)查詢成績不等于80分的學(xué)生

db.Student.find({"score":{$ne:"80"}}).pretty()

查詢結(jié)果如下圖所示:

3、MongoDB AND條件查詢

MongoDB的find()方法可以傳入多個(gè)鍵(key),每個(gè)鍵(key)以逗號(hào)分隔開,等價(jià)于常規(guī)SQL的AND條件。

語法格式如下:

db.collection.find({key1:value1,key2:value2}).pretty()

例如:查詢姓名為張三并且課程是C#程序設(shè)計(jì)的學(xué)生信息。

db.Student.find({"name":"張三","subject":"C#程序設(shè)計(jì)"}).pretty()

查詢結(jié)果如下圖所示:

以上實(shí)例中類似于RDBMS中的where語句:WHERE name='張三' AND subject='C#程序設(shè)計(jì)'。

4、MongoDB OR 條件查詢

MongoDB的OR條件語句使用了關(guān)鍵字$or,語法格式如下:

>db.collection.find(
  {
    $or:[
           {key1:value1},{key2:value2}
        ]
   }
)

例如:查詢姓名是李四或者成績等于80的學(xué)生

db.Student.find({$or:[{"name":"李四"},{"score":"80"}]}).pretty()

查詢結(jié)果如下圖所示:

三、更新文檔

MongoDB使用update()和save()方法來更新集合中的文檔。接下來讓我們詳細(xì)來看下兩個(gè)方法的應(yīng)用及其區(qū)別。

1、update()方法

update()方法用于更新已經(jīng)存在的文檔。語法格式如下:

db.collection.update(
  <query>,
  <update>,
 {
   upsert:<boolean>,
   multi:<boolean>,
   writeConcern:<document>
  }
)

參數(shù)說明:

  • query:update的查詢條件,類似sql update查詢內(nèi)where后面的條件。
  • update:update的對象和一些更新的操作符(如$set,Sinc......)等,也可以理解為sql update查詢內(nèi)set后面的。
  • upsert:可選參數(shù),這個(gè)參數(shù)的意思是:如果不存在update的記錄,是否插入新的文檔。如果為true則插入,默認(rèn)是false不插入。
  • multi:可選參數(shù),MongoDB默認(rèn)是false,只更新找到的第一條記錄。如果這個(gè)參數(shù)為true,就把按條件查詢出來的多條記錄全部更新。
  • writeConcern:可選參數(shù),拋出異常的級別。

writeConcern的幾種拋出異常的級別參數(shù)

  • writeConcern.NONE:沒有異常拋出。
  • writeConcern.NORMAL:僅拋出網(wǎng)絡(luò)錯(cuò)誤異常,沒有服務(wù)器錯(cuò)誤異常拋出。
  • writeConcern.SAFE:拋出網(wǎng)絡(luò)錯(cuò)誤異常、服務(wù)器錯(cuò)誤異常;并等待服務(wù)器完成寫操作。
  • writeConcern.MAJORITY:拋出網(wǎng)絡(luò)錯(cuò)誤異常、服務(wù)器錯(cuò)誤異常;并等待一個(gè)主服務(wù)器完成寫操作。
  • writeConcern.FSYNC_SAFE:拋出網(wǎng)絡(luò)錯(cuò)誤異常、服務(wù)器錯(cuò)誤異常;寫操作等待服務(wù)器將數(shù)據(jù)刷新到磁盤。
  • writeConcern.JOURNAL_SAFE:拋出網(wǎng)絡(luò)錯(cuò)誤異常、服務(wù)器錯(cuò)誤異常;寫操作等待服務(wù)器提交到磁盤的日志文件。
  • writeConcern.REPLICAS_SAFE:拋出網(wǎng)絡(luò)錯(cuò)誤異常、服務(wù)器錯(cuò)誤異常;等待至少2臺(tái)服務(wù)器完成寫操作。

例如:使用update()方法更新標(biāo)題(title)

上面的語句只會(huì)更新第一條查詢到的文檔,如果你要更新多條相同的文檔,則需要設(shè)置multi參數(shù)為true。

如果要更新的數(shù)據(jù)不存在,upsert參數(shù)設(shè)置為true則會(huì)插入數(shù)據(jù)。

2、save()方法

save()方法通過傳入的文檔來替換已有文檔,語法格式如下:

db.collection.save(
  <document>,
  {
    writeConcern:<document>
  }
)

參數(shù)說明:

  • document:要更新的文檔數(shù)據(jù)。
  • writeConcern:可選參數(shù),拋出異常的級別。

例如:更新_id=5a702a7f2c6ed8f4d3491831的文檔。

四、刪除文檔

MongoDB使用remove()方法來移除集合中的數(shù)據(jù)。

注意:在執(zhí)行remove()方法前先執(zhí)行find()命令來判斷執(zhí)行的條件是否正確,這是一個(gè)比較好的習(xí)慣。

remove()方法的基本語法格式如下:

db.collection.remove(
  <query>,
  <justOne>
)

如果MongoDB是2.6版本以后的,語法格式如下:

db.collection.remove(
  <query>,
  {
    justOne:<boolean>,
    writeConcern:<document>
   }
)

參數(shù)說明:

  • query:可選參數(shù),刪除文檔的條件。
  • justOne:可選參數(shù),如果設(shè)為true或1,則只刪除一個(gè)文檔。
  • writeConcern:可選參數(shù),拋出異常的級別。

實(shí)例

1、刪除title為MongoDB教程的文檔,只刪除一個(gè):

2、刪除所有數(shù)據(jù)

如果想刪除所有數(shù)據(jù),可以使用下面的例子

到此這篇關(guān)于使用MongoDB操作文檔的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • CentOS 6.4創(chuàng)建Mongodb副本集

    CentOS 6.4創(chuàng)建Mongodb副本集

    這篇文章主要為大家詳細(xì)介紹了CentOS 6.4創(chuàng)建Mongodb副本集的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 初識(shí)NoSQL NoSql數(shù)據(jù)庫入門 NoSql數(shù)據(jù)庫基礎(chǔ)知識(shí)

    初識(shí)NoSQL NoSql數(shù)據(jù)庫入門 NoSql數(shù)據(jù)庫基礎(chǔ)知識(shí)

    大家有沒有聽說過“NoSQL”呢?大家可能會(huì)誤以為是“No!SQL”的縮寫,但實(shí)際上,它是“Not Only SQL”的縮寫。它的意義是:適用關(guān)系型數(shù)據(jù)庫的時(shí)候就使用關(guān)系型數(shù)據(jù)庫,不適用的時(shí)候也沒有必要非使用關(guān)系型數(shù)據(jù)庫不可,可以考慮使用更加合適的數(shù)據(jù)存儲(chǔ)。
    2014-08-08
  • 老生常談MongoDB數(shù)據(jù)庫基礎(chǔ)操作

    老生常談MongoDB數(shù)據(jù)庫基礎(chǔ)操作

    下面小編就為大家?guī)硪黄仙U凪ongoDB數(shù)據(jù)庫基礎(chǔ)操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Mongodb在UPDATE操作中使用$pull的操作方法

    Mongodb在UPDATE操作中使用$pull的操作方法

    在UPDATE中使用$pull操作符,刪除數(shù)組中的指定元素或刪除符合條件的數(shù)組元素,本文基于Mongodb的官方文檔,介紹使用$pull,?按照指定條件刪除數(shù)組中的元素,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • MongoDB 主分片(primary shard)相關(guān)總結(jié)

    MongoDB 主分片(primary shard)相關(guān)總結(jié)

    這篇文章主要介紹了MongoDB 主分片(primary shard)相關(guān)總結(jié)。幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下
    2021-03-03
  • 常用的MongoDB查詢語句的示例代碼

    常用的MongoDB查詢語句的示例代碼

    最近做了幾個(gè)規(guī)則邏輯。用到mongo查詢比較多,就是查詢交易信息跑既定規(guī)則篩選出交易商戶,使用聚合管道進(jìn)行統(tǒng)計(jì)和取出簡單處理后的數(shù)據(jù),用SQL代替業(yè)務(wù)代碼邏輯的判斷,本文給大家介紹Mongodb查詢語句的示例代碼,一起看看吧
    2021-07-07
  • 關(guān)于Mongodb 認(rèn)證鑒權(quán)你需要知道的一些事

    關(guān)于Mongodb 認(rèn)證鑒權(quán)你需要知道的一些事

    最近因?yàn)閙ongodb被黑了,早先我就疑惑過怎么這東西開啟服務(wù)就能用了,后來找了各方資料,知道MongoDB默認(rèn)是沒有鑒權(quán)的,所以這篇文章主要給大家介紹了關(guān)于Mongodb認(rèn)證鑒權(quán)你需要知道的一些事,需要的朋友可以參考下。
    2017-10-10
  • 淺析mongodb中g(shù)roup分組

    淺析mongodb中g(shù)roup分組

    這篇文章主要介紹了淺析mongodb中g(shù)roup分組的實(shí)現(xiàn)方法及示例,非常的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • 解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問題

    解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問題

    這篇文章主要介紹了解決MAC上啟動(dòng)mongod報(bào)錯(cuò)exiting with code 1的問題,本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • mongodb禁止外網(wǎng)訪問及添加賬號(hào)的操作方法

    mongodb禁止外網(wǎng)訪問及添加賬號(hào)的操作方法

    這篇文章主要介紹了mongodb禁止外網(wǎng)訪問及添加賬號(hào)的操作方法,需要的朋友可以參考下
    2017-12-12

最新評論

东乌| 北安市| 板桥市| 凌云县| 仙居县| 八宿县| 湟源县| 兴隆县| 灌南县| 桦甸市| 太和县| 阿勒泰市| 海淀区| 平潭县| 延庆县| 乐都县| 桑日县| 北海市| 襄城县| 赤峰市| 罗平县| 涟水县| 原阳县| 齐河县| 通榆县| 张家口市| 拉萨市| 蓝山县| 南安市| 阳江市| 洪泽县| 中牟县| 河津市| 庐江县| 崇左市| 长子县| 饶阳县| 安远县| 德兴市| 镇江市| 顺平县|