内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

mongoDB中CRUD如何使用

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)MongoDB中CRUD如何使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、建昌網(wǎng)站維護(hù)、網(wǎng)站推廣。

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

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

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

db.collection.insert()

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

例如

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

如果插入成功就會(huì)返回

WriteResult({ "nInserted" : 3 })

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

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

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

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

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

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版本的語(yǔ)法。

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

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

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

2、指定等于條件

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

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

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

3、指定 AND 條件

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

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

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

4、指定 OR 條件

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

下面的示例在 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> }并且 “” 為要匹配文檔的查詢文檔,來(lái)指定匹配整個(gè)內(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ù)組上的查詢

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

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

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

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

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

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

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

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

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

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

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

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

單個(gè)元素滿足查詢條件

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

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

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

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

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

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

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

來(lái)一段官方文檔的話:

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

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

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

下面的例子對(duì) users 集合使用 db.collection.updateOne() 方法來(lái)更新第一個(gè) 根據(jù) 過(guò)濾條件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 }這個(gè)參數(shù),這樣會(huì)在你修改之后的數(shù)據(jù)中有這個(gè)參數(shù),表示修改完成。

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

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

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

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

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

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

走著,擼刪除了:

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

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

db.users.remove({})

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

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

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

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

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

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

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

db.users.deleteMany({})

上述就是小編為大家分享的mongoDB中CRUD如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:mongoDB中CRUD如何使用
標(biāo)題來(lái)源:http://m.rwnh.cn/article20/jepsco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化App設(shè)計(jì)、品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
杭锦后旗| 惠安县| 大田县| 镇雄县| 南丰县| 丁青县| 射阳县| 安西县| 兴和县| 临沧市| 衡山县| 德昌县| 苗栗市| 永济市| 吴江市| 霍州市| 长治县| 宣恩县| 玉山县| 达尔| 惠水县| 龙川县| 泰安市| 寿阳县| 石楼县| 康定县| 光山县| 田林县| 集安市| 武夷山市| 河津市| 泰来县| 专栏| 台北县| 连云港市| 体育| 梁平县| 茶陵县| 朝阳市| 石嘴山市| 高邮市|