国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB原生命令CURD

xuexiangjys / 1786人閱讀

摘要:使用使得數(shù)組變?yōu)閿?shù)據(jù)集合和組合使用,效果是與一樣,但是可以用來(lái)同時(shí)插入多條數(shù)據(jù)使用刪除數(shù)組元素從數(shù)組末尾刪除,從數(shù)組頭部刪除使用刪除元素使用是一種特殊的更新,要是沒(méi)有找到符合更新條件的文檔,就會(huì)以這個(gè)條件和更新文檔為基礎(chǔ)創(chuàng)建一個(gè)新的文檔。

《MongoDB權(quán)威指南》學(xué)習(xí)摘錄

Insert 使用insert方法

該操作文檔會(huì)自動(dòng)生成一個(gè)"_id"鍵

>db.foo.insert({“bar” : “baz”})
批量插入,使用batchInsert函數(shù)
>db.foo.batchInsert([{ "_id" : 0 } , { "_id" : 1 } , { "_id" : 2 }])

當(dāng)前mongodb能接受的最大消息長(zhǎng)度是48MB,并且如果在執(zhí)行批量插入過(guò)程中有一個(gè)文檔插入失敗,則在該文檔之前的所有文檔都會(huì)成功插入到集合中,而這個(gè)文檔之后的所有文檔全部插入失敗。

Remove 使用remove方法
//刪除foo集合的所有文檔
>db.foo.remove()

//刪除指定查詢文檔作為可選參數(shù)
>db.mailing.list.remove( { “opt-out” : true } )
使用drop()比直接刪除集合會(huì)更快
>db.foo.drop()
Update 文檔替換
{
  "_id": ObjectId("..."),
  "name": "joe",
  "friends": 32,
  "enemies": 2
}

現(xiàn)在需要更新"friends"和"enemies"兩個(gè)字段到"relationships"子文檔中

>var joe = db.users.findOne({"name":joe});
>joe.relationships = {"friends":joe.friends,"enemies":joe.enemies};
{
  "friends":32,
  "enemies":2
}
>joe.username = joe.name;
"joe"
>delete joe.friends;
true
>delete joe.enemies;
true
>delete joe.name;
true
>db.users.update({"name":"joe"},joe);

更新后的文檔

{
  "_id":ObjectId("..."),
  "username":"joe",
  "relationships":{
    "friends":32,
    "enemies":2
  }
}

常見(jiàn)的錯(cuò)誤是查詢條件匹配到多個(gè)文檔,然后更新的時(shí)候回由于第二個(gè)參數(shù)的存在就產(chǎn)生重復(fù)的"_id"值,對(duì)于這種情況要使用"_id"值來(lái)進(jìn)行查詢

使用修改器

"$inc"修改器使用

當(dāng)有人訪問(wèn)頁(yè)面的時(shí)候,就通過(guò)url找到該頁(yè)面,然后使用"$inc"修改器增加"pagerviews"的值

{
  "_id":ObjectId("..."),
  "url":"www.lgybetter.com",
  "pagerviews":52
}
>db.analytics.update({"url":"www.lgybetter.com"},{"$inc" : {"pagerviews" : 1}})

注意,使用修改器時(shí),"_id"并不會(huì)改變,而文檔替換過(guò)則會(huì)

"$set"修改器使用

>db.user.update({"_id":ObjectId(...)},{"$set" : {"favorite book" : "War and Peace"}})

于是更新后的文檔就有了"favorite book"鍵,如果要繼續(xù)修改則:

>db.user.update({"_id":ObjectId(...)},{"$set" : {"favorite book" : "Green Eggs and Ham"}})

也可以變?yōu)閿?shù)組的類型

使用"$unset"可以將這個(gè)鍵完全刪除:

>db.user.update({"name":joe},{"$unset" : {"favorite book" : 1}})

"$push"修改器使用

如果數(shù)組存在,"$push"會(huì)向已有的數(shù)組的末尾加入一個(gè)元素,如果沒(méi)有改數(shù)組就創(chuàng)建一個(gè)新的數(shù)組

{
  "_id":ObjectId("..."),
  "title":"A blog post",
  "content":"..."
}
>db.blogs.posts.update({"title" : "A blog post"},{"$push" : {
    "comments" : {"name" : "joe","email" : "joe@example.com","content":"nice post."}
}})
>db.blog.posts.findOne()
{
  "_id":ObjectId("..."),
  "title":"A blog post",
  "content":"...",
  "comments": [
    {
      "name":"joe",
      "email":"joe@example.com",
      "content":"nice post"
    }
  ]
}

注意,"$push"會(huì)創(chuàng)建一個(gè)數(shù)組的類型,可用于動(dòng)態(tài)添加數(shù)據(jù)

用"$push"一次添加多個(gè)數(shù)據(jù),配合使用"$each"

>db.stock.ticker.update({"_id":"GOOG"},{
  "$push" : {"hourly" : { "$each" : [
    562.776,562.790,559.123
  ]}}
})

使用"$slice"來(lái)固定數(shù)組的最大長(zhǎng)度

>db.movies.find({"genre" : "horror"},{
  "$push" : { "top10" : {
      "$each" : ["Nightmare on Elm Street" , "Saw"],
      "$slice" : -10,
      "$sort" : {"rating" : -1}
    }
  }
})

注意,"$slice"的值應(yīng)該是負(fù)整數(shù),"$sort"可以用來(lái)對(duì)數(shù)組中的所有對(duì)象進(jìn)行排序,不能只將"$slice"或者"$sort"與"$push"配合使用,且必須使用"$each"。

使用"$ne",使得數(shù)組變?yōu)閿?shù)據(jù)集合

>db.paper.update({"authors cited" : {"$ne" : "Richie"},
  {"$push" : {"authors cited" : "Richie"}}
})

"$addToSet"和"$each"組合使用,效果是與"$ne"一樣,但是可以用來(lái)同時(shí)插入多條數(shù)據(jù)

>db.users.update({"_id" : ObjectId("...")}, {"$addToSet" :
  {"emails" : {"$each" :
    ["joe@php.net","joe@example.com","joe@python.org"]
  }}
})

使用"$pop"刪除數(shù)組元素{"$pop" : {"key" : 1}}從數(shù)組末尾刪除,{"$pop" : {"key" : -1}}從數(shù)組頭部刪除

使用"$pull"刪除元素

>db.lists.update({},{"$pull" : {"todo" : "laundry"}})
使用upsert

upsert是一種特殊的更新,要是沒(méi)有找到符合更新條件的文檔,就會(huì)以這個(gè)條件和更新
文檔為基礎(chǔ)創(chuàng)建一個(gè)新的文檔。

>db.analytics.update({"url" : "/blog"} , {"$inc" : {"pageviews" : 1}} ,true)

有時(shí)候,需要在創(chuàng)建文檔的同時(shí)創(chuàng)建字段并為它賦值,但是在之后的所有更新操作中,該字段的值就不再改變。這時(shí)候就使用"$setOnInsert"

>db.users.update({} , {"$setOnInsert" : {"createdAt" new Date()}},true)
更新多個(gè)文檔

具體的操作值通過(guò):

>db.runCommand({getLastError:1}) 

返回結(jié)果

{
  "err":null,
  "updatedExisting":true,
  "n":5,
  "ok":true
}    
Find find入門(mén)操作

查詢?cè)摷舷碌乃形臋n

>db.c.find()

查詢特定值的文檔,可以同時(shí)添加多個(gè)條件

>db.users.find({"age" : 20})
>db.users.find({"age" : 20 , "name" : "lgy"})
//指定需要返回的鍵
>db.users.find({} , {"username" : 1,"email" : 1})
//返回結(jié)果
{
  "_id":ObjectId("..."),
  "username":"lgy",
  "email":"lgy@example.com"
}

通過(guò)查詢,默認(rèn)情況下回返回"_id"這個(gè)鍵,如果希望不出現(xiàn)其他的鍵值,就使用如下:

>db.users.find({},{"username" : 1,"_id" : 0})
//返回結(jié)果
{
    "username":"lgy"
}
查詢條件

查詢條件:

"$lt","$lte","$gt","$gte"就是全部的比較操作符,分別對(duì)應(yīng)<,<=,>,>=

//查詢18 ~ 30歲的用戶:
>db.users.find({"age" : {"$gte" : 18 , "$lte" : 30}})

"$ne"表示不等于某個(gè)特定的值

//查詢用戶名不為"lgy"的所有用戶
>db.users.find({"username" : {"$ne" : "lgy"}})

OR查詢:

"$in" 和 "$or"兩種方式進(jìn)行OR查詢

>db.raffle.find({"ticket_no" : {"$in" : [725,542,390]}})

"$nin"是與"$in"相反的

>db.raffle.find({"$or" : [{"ticket_no" : 725},{"winner" : true}]})

兩者結(jié)合使用:

>db.raffle.find({"$or" : [{"ticket_no" : {"$in" : [725,542,300]}},{"winner" : true}]})

$not

"$not"是元條件句,即可以在任何其他條件之上。

"$mod"通過(guò)傳入兩個(gè)參數(shù),第一個(gè)用來(lái)作為除數(shù),第二個(gè)是用來(lái)判定余數(shù)是否為此數(shù)字
>db.user.find({"id_num" : {"$not" : {"$mod" : [5,1]}}})
特定類型的查詢

null

null不僅會(huì)匹配某個(gè)鍵的值為null的文檔,而且還匹配不包含這個(gè)鍵的文檔

>db.c.find({"z" : null})

如果僅僅想匹配鍵值為null的文檔,則可以加"$exists"條件:

>db.c.find({"z" : {"$in" : [null], "$exists" : true}})

正則表達(dá)式

>db.users.find({"name" : /joey?/i})

查詢數(shù)組

$all,可以用來(lái)進(jìn)行多個(gè)元素匹配數(shù)組

//這樣查找就可以匹配到同時(shí)存在的兩個(gè)元素的文檔
>db.food.find({"fruit" : {"$all" : ["people","banana"]}})

$size用來(lái)查詢特定長(zhǎng)度的數(shù)組

>db.food.find({"furit" : {"$size" : 3}})

$slice用來(lái)返回某個(gè)匹配數(shù)組元素的一個(gè)子集

//返回前十條評(píng)論,如果把10換成-10就是返回后十條評(píng)論
>db.blog.posts.findOne(criteria,{"comments" : {"$slice" : 10}})

//這個(gè)操作會(huì)跳過(guò)前面23個(gè)元素,返回第24~33個(gè)元素
>db.blog.posts.findOne(criteria,{"comments" : {"$slice" : [23,10]}})

返回一個(gè)匹配的數(shù)組元素

>db.blog.find({"comments.name" : "bob"}, {"comments.$" : 1})
//返回結(jié)果
{
  "id" : ObjectId("..."),
  "comments" : [
    {
      "name" : "bob",
      "email" : "bob@example.com",
      "content" : "good post"
    }
  ]
}
//這樣就只會(huì)返回第一條評(píng)論

查詢內(nèi)嵌文檔

現(xiàn)在有這樣的數(shù)據(jù)

{
  "name": {
    "first":"joe",
    "last":"Schmoe"
  },
  "age":45
}

對(duì)內(nèi)嵌文檔的查詢

//用點(diǎn)表示法表達(dá)"進(jìn)入內(nèi)嵌文檔內(nèi)部"的意思
>db.people.find({"name.first" : "joe" ,"name.last" : "Schmoe"})

要正確指定一組條件,而不必指定每個(gè)鍵,就需要使用"$elematch"

>db.blog.find({"comments" : {$elematch" : {"author" : "joe", "score" : {"$gte" : 5}}}})
游標(biāo)

游標(biāo)查詢的具體操作:

>for(i = 0; i <100; i ++) {
  db.collection.insert({x : i});
}

>var cursor = db.collection.find();

>while(cursor.hasNext()) {
  obj = cursor.next();
  //輸出查看
}

###limit,skip,和sort

    >db.c.find().limit(3)


    >db.c.find().skip(3)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/18977.html

相關(guān)文章

  • VueCli+Node+mongodb打造個(gè)人博客(含前臺(tái)展示及后臺(tái)管理系統(tǒng))(上)

    摘要:前言學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講項(xiàng)目地址效果后臺(tái)管理系統(tǒng)前端頁(yè)面架構(gòu)可以看到,在整個(gè)項(xiàng)目中,沒(méi)有頁(yè)面的跳轉(zhuǎn)只有前后端的數(shù)據(jù)交換,所有的頁(yè)面更新都是組件更新和數(shù)據(jù)更新后端只對(duì)數(shù) 前言 學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講 項(xiàng)目github地址:https://git...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • VueCli+Node+mongodb打造個(gè)人博客(含前臺(tái)展示及后臺(tái)管理系統(tǒng))(上)

    摘要:前言學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講項(xiàng)目地址效果后臺(tái)管理系統(tǒng)前端頁(yè)面架構(gòu)可以看到,在整個(gè)項(xiàng)目中,沒(méi)有頁(yè)面的跳轉(zhuǎn)只有前后端的數(shù)據(jù)交換,所有的頁(yè)面更新都是組件更新和數(shù)據(jù)更新后端只對(duì)數(shù) 前言 學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講 項(xiàng)目github地址:https://git...

    tinyq 評(píng)論0 收藏0
  • VueCli+Node+mongodb打造個(gè)人博客(含前臺(tái)展示及后臺(tái)管理系統(tǒng))(上)

    摘要:前言學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講項(xiàng)目地址效果后臺(tái)管理系統(tǒng)前端頁(yè)面架構(gòu)可以看到,在整個(gè)項(xiàng)目中,沒(méi)有頁(yè)面的跳轉(zhuǎn)只有前后端的數(shù)據(jù)交換,所有的頁(yè)面更新都是組件更新和數(shù)據(jù)更新后端只對(duì)數(shù) 前言 學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講 項(xiàng)目github地址:https://git...

    kidsamong 評(píng)論0 收藏0
  • VueCli+Node+mongodb打造個(gè)人博客(含前臺(tái)展示及后臺(tái)管理系統(tǒng))(上)

    摘要:前言學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講項(xiàng)目地址效果后臺(tái)管理系統(tǒng)前端頁(yè)面架構(gòu)可以看到,在整個(gè)項(xiàng)目中,沒(méi)有頁(yè)面的跳轉(zhuǎn)只有前后端的數(shù)據(jù)交換,所有的頁(yè)面更新都是組件更新和數(shù)據(jù)更新后端只對(duì)數(shù) 前言 學(xué)習(xí)前端也有一段時(shí)間了做個(gè)個(gè)人博客網(wǎng)站吧正好總結(jié)練習(xí)一下這段時(shí)間的所學(xué)文章很長(zhǎng),會(huì)拆成三篇來(lái)講 項(xiàng)目github地址:https://git...

    xcold 評(píng)論0 收藏0
  • mongodb學(xué)習(xí)筆記(3)--mongoose實(shí)現(xiàn)curd

    簡(jiǎn)介 mongoose實(shí)現(xiàn)curd 初始化 showImg(https://segmentfault.com/img/bVbhflF?w=307&h=211); npm init cnpm install mongoose --save-dev index.js const mongoose = require(mongoose); mongoose.connect(mongodb://127....

    ShowerSun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<