欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > mongoDB中CRUD的深入講解

mongoDB中CRUD的深入講解

熱門標簽:呼和浩特外呼系統(tǒng)原理是什么 crm外呼系統(tǒng)聯(lián)系方式 長沙電銷外呼防封卡是什么 小裙科技電銷機器人怎樣 智能外呼系統(tǒng)官網(wǎng) 內(nèi)蒙古營銷智能外呼系統(tǒng)哪個好 外呼線路資源屬于電信業(yè)務(wù)嗎 河南電話外呼系統(tǒng)招商 青白江400企業(yè)電話申請

前言

今天開始接觸非關(guān)系型數(shù)據(jù)庫的mongoDB,現(xiàn)在將自己做的筆記發(fā)出來,供大家參考,也便于自己以后忘記了可以查看。

首先,mongoDB,是一種數(shù)據(jù)庫,但是又區(qū)別與mysql,sqlserver、orcle等關(guān)系數(shù)據(jù)庫,在優(yōu)勢上面也略高一籌;至于為什么會這么說呢?很簡單,我們來舉兩個例子:

1.在存儲上面,非關(guān)系型數(shù)據(jù)庫可以更大規(guī)模的存儲,打個比方,F(xiàn)acebook用的數(shù)據(jù)庫就是非關(guān)系型數(shù)據(jù)庫。

2.運用起來更加流暢也是這個數(shù)據(jù)庫的優(yōu)點,將分布式的特點發(fā)揮到極致。

當我查看官方文檔的時候,簡直要人命,光是一個插入方法都講了好幾條,腦袋都大了,現(xiàn)在我總結(jié)一下每一插入方法的特性

db.collection.insert()

db.collection.insert() 向集合插入一個或多個文檔.要想插入一個文檔,傳遞一個文檔給該方法;要想插入多個文檔,就可以采用該方法。

例如

db.users.insert(
   [
    { name: "bob", age: 42, status: "A", },
    { name: "ahn", age: 22, status: "A", },
    { name: "xi", age: 34, status: "D", }
   ]
   )

如果插入成功就會返回

WriteResult({ "nInserted" : 3 })

如果異常情況,那么就會返回如下咯:

WriteResult({
   "nInserted" : 3,
   "writeConcernError" : {
    "code" : 64,
    "errmsg" : "waiting for replication timed out at shard-a"
   }
   })

當我們想插入一條數(shù)據(jù)的時候,采用insert的方法據(jù)比較浪費內(nèi)存,這個時候,我們久采用插入單個的語法db.collection.insertOne() 向集合插入 單個 文檔 document 舉個小列子來說明一下。

db.users.insertOne(
   {
    name: "sue",
    age: 19,
    status: "P"
   }
   )

有了單個,就肯定會有多個,那么多個又是怎么樣的呢?語法都很類似,db.collection.insertMany()這個語法跟上面沒有區(qū)別嘛,對不對,當然是錯的,你想,如果添加的數(shù)據(jù)是數(shù)組里面嵌套數(shù)組,前面兩個的方法的性能就大打折扣了,影響數(shù)據(jù)庫的性能。廢話少說,列子走一波:

db.users.insertMany(
   [
    {
    _id: 1,
    name: "sue",
    age: 19,
    type: 1,
    status: "P",
    favorites: { artist: "Picasso", food: "pizza" },
    finished: [ 17, 3 ],
    badges: [ "blue", "black" ],
    points: [
     { points: 85, bonus: 20 },
     { points: 85, bonus: 10 }
    ]
    },
    {
    _id: 2,
    name: "bob",
    age: 42,
    type: 1,
    status: "A",
    favorites: { artist: "Miro", food: "meringue" },
    finished: [ 11, 25 ],
    badges: [ "green" ],
    points: [
     { points: 85, bonus: 20 },
     { points: 64, bonus: 12 }
    ]
    },
    {
    _id: 3,
    name: "ahn",
    age: 22,
    type: 2,
    status: "A",
    favorites: { artist: "Cassatt", food: "cake" },
    finished: [ 6 ],
    badges: [ "blue", "Picasso" ],
    points: [
     { points: 81, bonus: 8 },
     { points: 55, bonus: 20 }
    ]
    },
    {
    _id: 4,
    name: "xi",
    age: 34,
    type: 2,
    status: "D",
    favorites: { artist: "Chagall", food: "chocolate" },
    finished: [ 5, 11 ],
    badges: [ "Picasso", "black" ],
    points: [
     { points: 53, bonus: 15 },
     { points: 51, bonus: 15 }
    ]
    },
    {
    _id: 5,
    name: "xyz",
    age: 23,
    type: 2,
    status: "D",
    favorites: { artist: "Noguchi", food: "nougat" },
    finished: [ 14, 6 ],
    badges: [ "orange" ],
    points: [
     { points: 71, bonus: 20 }
    ]
    },
    {
    _id: 6,
    name: "abc",
    age: 43,
    type: 1,
    status: "A",
    favorites: { food: "pizza", artist: "Picasso" },
    finished: [ 18, 12 ],
    badges: [ "black", "blue" ],
    points: [
     { points: 78, bonus: 8 },
     { points: 57, bonus: 7 }
    ]
    }
   ]
   )

注意:insertOne()、insertMany()是3.2版本的語法。

既然增了,就得查找,對吧,查找里面呢也有很多小東西,有許多自己自定義查詢。

1、查詢?nèi)?/p>

db.users.find( {} ) 等價于db.users.find()

2、指定等于條件

一個 query filter document 可以使用 field>:value> 表達式指定等于條件以選擇所有包含 field> 字段并且等于特定 value> 的所有文檔:

下面的示例從 user 集合中檢索 status 字段值為 “P” 或者 “D” 的所有文檔:

db.users.find( { status: { $in: [ "P", "D" ] } } )

3、指定 AND 條件

復(fù)合查詢可以在集合文檔的多個字段上指定條件。隱含地,一個邏輯的 AND 連接詞會連接復(fù)合查詢的子句,使得查詢選出集合中匹配所有條件的文檔。

下面的示例在 users 集合中檢索 status 等于 "A"``**并且** ``age 小于 ($lt) 30是所有文檔:

db.users.find( { status: "A", age: { $lt: 30 } } )

4、指定 OR 條件

通過使用 $or 操作符,你可以指定一個使用邏輯 OR 連接詞連接各子句的復(fù)合查詢選擇集合中匹配至少一個條件的文檔。

下面的示例在 users 集合中檢索 status` 等于 "A"**或者**age 小于 ($lt) 30 所有文檔:

db.users.find(
      {
        $or: [ { status: "A" }, { age: { $lt: 30 } } ]
      }
      )

5、指定 AND 和 OR 條件(可以更加精確的查詢)

在下面的示例中,復(fù)合查詢文檔選擇集合中status`` 等于 "A" 并且 要么 age 小于 ($lt) 30 要么 type 等于 1 的所有文檔:

db.users.find(
      {
        status: "A",
        $or: [ { age: { $lt: 30 } }, { type: 1 } ]
      }
      )

6、嵌入文檔上的精確匹配

使用{ field>: value> }并且 “” 為要匹配文檔的查詢文檔,來指定匹配整個內(nèi)嵌文檔的完全相等條件.(要使)相等條件匹配上內(nèi)嵌文檔需要指定 包括字段順序的 精確 匹配。

在下面的例子中,查詢匹配所有 favorites 字段是以該種順序只包含 等于 "Picasso"``的 ``artist 和等于 "pizza" 的 food 字段的內(nèi)嵌文檔:

db.users.find( { favorites: { artist: "Picasso", food: "pizza" } } )

7、嵌入文檔中字段上的等于匹配

在下面的例子中,查詢使用 dot notation 匹配所有 favorites 字段是包含等于 "Picasso" 的字段 ``artist``(可能還包含其他字段) 的內(nèi)嵌文檔:

db.users.find( { "favorites.artist": "Picasso" } )

8、數(shù)組上的查詢

采用一個參數(shù): $elemMatch (該參數(shù)是值精確的數(shù)組)

下面的例子查詢 finished 數(shù)組至少包含一個大于 ($gt) 15 并且小于 ($lt) 20 的元素的文檔:

db.users.find( { finished: { $elemMatch: { $gt: 15, $lt: 20 } } } )

9、嵌入文檔數(shù)組

使用數(shù)組索引匹配嵌入文檔中的字段

在下面的例子中,查詢使用 the dot notation 匹配所有 dadges 是第一個元素為”black” 的數(shù)組的文檔:

db.users.find( { 'points.0.points': { $lte: 55 } } )

10、不指定數(shù)組索引匹配字段

如果你不知道文檔在數(shù)組中的索引位置,用點號 (.) 將包含數(shù)組的字段的名字和內(nèi)嵌文檔的字段的名字連起來。

下面的例子選擇出所有 points``數(shù)組中至少有一個嵌入文檔包含值小于或等于 ``55 的字段 points 的文檔:

db.users.find( { 'points.points': { $lte: 55 } } )

11、指定數(shù)組文檔的多個查詢條件

單個元素滿足查詢條件

使用 $elemMatch 操作符為數(shù)組元素指定復(fù)合條件,以查詢數(shù)組中至少一個元素滿足所有指定條件的文檔。

下面的例子查詢 points 數(shù)組有至少一個包含 points 小于等于 70 并且字段 bonus 等于 20 的內(nèi)嵌文檔的文檔:

db.users.find( { points: { $elemMatch: { points: { $lte: 70 }, bonus: 20 } } }

12、元素組合滿足查詢條件

下面的例子查詢了 points 數(shù)組包含了以某種組合滿足查詢條件的元素的文檔;例如,一個元素滿足 points 小于等于 70 的條件并且有另一個元素滿足 bonus 等于 20 的條件,或者一個元素同時滿足兩個條件:

db.users.find( { "points.points": { $lte: 70 }, "points.bonus": 20 } )

接下來就是更新咯,老樣子跟插入方法差不多,更新就可以看做是插入的一種。

來一段官方文檔的話:

如果 db.collection.update() db.collection.updateOne() db.collection.updateMany() 或者 db.collection.replaceOne() 包含 upsert : true 并且 沒有文檔匹配指定的過濾器,那么此操作會創(chuàng)建一個新文檔并插入它。如果有匹配的文檔,那么此操作修改或替換匹配的單個或多個文檔。

這個解釋在我認為就是在沒有該數(shù)據(jù)的時候就會創(chuàng)建相應(yīng)的數(shù)據(jù),畢竟它是插入的一種特殊方法。

1、db.collection.updateOne():修改單條數(shù)據(jù)

下面的例子對 users 集合使用 db.collection.updateOne() 方法來更新第一個 根據(jù) 過濾條件favorites.artist 等于 “Picasso” 匹配到的文檔更新操作:

使用 $set 操作符更新 favorites.food 字段的值為 “pie” 并更新 type 字段的值為 3,

db.users.updateOne(
      { "favorites.artist": "Picasso" },
      {
        $set: { "favorites.food": "pie", type: 3 },
        
      }
      )

2、db.collection.update()的用法和db.collection.updateOne()類似,為了區(qū)別一下,我們采用了 { multi: true }這個參數(shù),這樣會在你修改之后的數(shù)據(jù)中有這個參數(shù),表示修改完成。

db.users.update(
      { "favorites.artist": "Pisanello" },
      {
        $set: { "favorites.food": "pizza", type: 0, }
      },
      { multi: true }
      )

3、 db.collection.updateMany(),這個會不會認為是修改很多,當然可以這么理解,但是我更喜歡把他理解成修改多個參數(shù)。

下面這個舉例就是為了大家看的明白采用了{ upsert: true },它可以清晰的返回你修改后的值

 db.inspectors.updateMany(
        { "Sector" : { $gt : 4 }, "inspector" : "R. Coltrane" },
        { $set: { "Patrolling" : false } },
        { upsert: true }
      );

4、修改還有一個就是文檔替換db.collection.replaceOne
下面的例子對 users 集合使用 db.collection.replaceOne() 方法將通過過濾條件 name 等于 "sue" 匹配到的 **第一個** 文檔替換為新文檔:

db.users.replaceOne(
      { name: "abc" },
      { name: "amy", age: 34, type: 2, status: "P", favorites: { "artist": "Dali", food: "donuts" } }
      )

走著,擼刪除了:

1、刪除所有文檔db.collection.remove()

這個方法就干脆了,就相當于sql中的刪除表結(jié)構(gòu)的delete()

db.users.remove({})

作為另一種選擇如下例子使用 db.collection.remove() 從 users 集合中刪除所有 status 字段等于 “A” 的文檔:

db.users.remove( { status : "P" } )

2、僅刪除一個滿足條件的文檔db.collection.deleteOne()

如下例子使用 db.collection.deleteOne() 刪除 第一個 status 字段等于 “A” 的文檔:

db.users.deleteOne( { status: "D" } )

3、刪除集合中所有文檔db.collection.deleteMany()

如下的例子使用 db.collection.deleteMany() 方法從 users 集合中刪除了 所有 文檔:

db.users.deleteMany({})

以上是通過兩天學(xué)習(xí)官方文達能的總結(jié),下面配上官方文檔的地址表示感謝。
https://docs.mongodb.com/manual/reference/method/js-collection/

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MongoDB CRUD操作中的插入實例教程
  • Springboot整合MongoDB進行CRUD操作的兩種方式(實例代碼詳解)
  • MongoDB的基本操作實例詳解【服務(wù)端啟動,客戶端連接,CRUD操作】
  • MongoDB 常用的crud操作語句

標簽:池州 白山 楚雄 黃石 菏澤 呼倫貝爾 安順 舟山

巨人網(wǎng)絡(luò)通訊聲明:本文標題《mongoDB中CRUD的深入講解》,本文關(guān)鍵詞  mongoDB,中,CRUD,的,深入,講解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mongoDB中CRUD的深入講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于mongoDB中CRUD的深入講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产精品久久久久永久免费观看 | 韩国三级与黑人| 国产又黄又粗又猛又爽的| 日韩欧美国产一区二区在线播放| 亚洲精品欧美二区三区中文字幕| 久久综合九色综合欧美98| 亚洲主播在线观看| 91看片淫黄大片一级在线观看| 免费在线观看一级片| 中文字幕视频一区二区三区久| 丁香五精品蜜臀久久久久99网站| 黄色免费一级视频| 欧美国产一区二区| 国产精品一区一区| 久久一级免费视频| 国产精品无遮挡| 国产1区2区3区精品美女| 欧美肥妇bbwbbw| 国产精品久久久久久久久动漫| 国产aⅴ综合色| 色综合一个色综合| 亚洲另类在线视频| 中文字幕一区二区三区人妻在线视频| 91福利在线播放| 亚洲一区二区高清| 欧产日产国产精品98| 日韩一二三四区| 精品影院一区二区久久久| 极品尤物一区二区| 国产精品久久久久久久第一福利 | 欧美 日韩 国产 一区二区三区| 国产精品短视频| 深夜福利网站在线观看| 欧美精品色一区二区三区| 免费成人在线视频观看| 欧洲美熟女乱又伦| 国产精品久线观看视频| 91香蕉视频黄| 欧美一区二区播放| 国产一区二区视频在线| 欧美国产日韩在线观看成人| 亚洲自拍偷拍图区| 37p粉嫩大胆色噜噜噜| 欧美国产精品中文字幕| 佐山爱在线视频| 日韩欧美三级在线| 国产高清无密码一区二区三区| 福利所第一导航| 午夜不卡av在线| 日韩一级片在线免费观看| 亚洲免费观看在线视频| 亚洲第一黄色网址| 国产欧美一区二区精品婷婷| 91毛片在线观看| 精品久久久久久无| 99久久777色| 欧美大片顶级少妇| 成人app网站| 国产xxx在线观看| 欧美一区二区三区免费在线看| 国产一区二区三区免费| 欧美制服丝袜第一页| 美女诱惑一区二区| 色综合天天综合网天天看片| 日日夜夜一区二区| 欧美第一页在线观看| 午夜久久电影网| 中文字幕第69页| 亚洲成在线观看| 又色又爽的视频| 亚洲一区二区三区四区中文字幕| 日本一区二区视频在线播放| 一区二区三区成人在线视频| 极品久久久久久久| 亚洲成人福利片| 爱爱视频免费在线观看| 日本欧美一区二区| 色噜噜狠狠成人网p站| 久久se精品一区二区| 日日夜夜免费精品视频| 亚洲图片自拍偷拍| 丝袜美腿中文字幕| 一区av在线播放| 三上悠亚作品在线观看| 青青草91视频| 欧美色网站导航| 顶级嫩模精品视频在线看| 欧美哺乳videos| 久久久无码人妻精品无码| 国产精品美日韩| 欧美日韩高清丝袜| 亚洲v中文字幕| 色综合中文字幕| 国产精品夜夜嗨| 精品理论电影在线观看| 精人妻一区二区三区| 1000精品久久久久久久久| 久久精品三级视频| 奇米色一区二区| 欧美群妇大交群中文字幕| 99久久精品久久久久久清纯| 国产丝袜欧美中文另类| 色噜噜日韩精品欧美一区二区| 午夜天堂影视香蕉久久| 欧美亚洲国产怡红院影院| 成人av在线资源网站| 国产日韩欧美精品综合| 三上悠亚影音先锋| 日韩av在线发布| 欧美丰满嫩嫩电影| 无人码人妻一区二区三区免费| 国产精品福利在线播放| 日日碰狠狠添天天爽| 黄色资源网久久资源365| 日韩精品一区二区三区在线观看| 免费啪视频在线观看| 一区二区三区在线免费播放| a级黄色片免费看| 成人的网站免费观看| 国产精品美女www爽爽爽| 人妻互换一区二区激情偷拍| 久久99精品久久久久婷婷| 日韩你懂的在线观看| 制服丝袜第二页| 日韩国产欧美三级| 日韩一区二区三区在线视频| 亚洲视频 中文字幕| 亚洲成人1区2区| 91精品国产综合久久香蕉麻豆| 91成人在线观看喷潮蘑菇| 亚洲丶国产丶欧美一区二区三区| 欧美日韩一区二区三区不卡| 九色91porny| 亚洲国产精品欧美一二99| 欧美精品丝袜中出| 亚洲一区二区三区四区五区六区| 日本欧美在线看| 亚洲精品一区二区三区四区高清| 蜜桃av免费看| 国产在线播放一区二区三区| 日本一区二区视频在线| av激情在线观看| 99国产精品视频免费观看| 一区二区免费看| 欧美美女直播网站| aa片在线观看视频在线播放| 麻豆精品一区二区av白丝在线| 精品国产百合女同互慰| 亚洲图片第一页| 不卡电影一区二区三区| 一区二区三区免费在线观看| 欧美色老头old∨ideo| 欧美肉大捧一进一出免费视频| 青青青伊人色综合久久| 久久婷婷综合激情| 亚洲国产美女视频| wwwww在线观看| 男女视频一区二区| 国产无人区一区二区三区| www.超碰在线观看| 制服丝袜av在线| 精品一区二区免费| 中文字幕制服丝袜成人av| 欧美日韩精品二区第二页| 五月婷婷综合在线观看| 国产丶欧美丶日本不卡视频| 亚洲精品日韩一| 日韩女优av电影| 国产suv一区二区三区| 波多野结衣加勒比| 国产一区二区视频在线| 一区二区免费在线播放| 欧美精品一区二区蜜臀亚洲| 精品自拍偷拍视频| 中文字幕 亚洲一区| 国产成人午夜片在线观看高清观看| 亚洲免费观看高清在线观看| 日韩一区二区三区高清免费看看| 成人无码精品1区2区3区免费看| 99re这里只有精品首页| 日韩高清电影一区| 国产精品美女久久久久久久久久久 | 日韩aaaaa| 国产福利电影一区二区三区| 亚洲成人av一区| 国产偷国产偷亚洲高清人白洁| 在线观看亚洲a| 国产伦理片在线观看| 91原创在线视频| 精品一区二区三区视频| 亚洲嫩草精品久久| 久久久久久久综合| 欧美日韩视频在线一区二区| 超薄肉色丝袜一二三| 国产sm在线观看| 国产福利一区在线观看| 亚洲成人动漫精品| 一区在线观看免费| 久久久天堂av| 制服丝袜国产精品|