MongoDB三 之 Array Object 的特殊操作

來源:互聯網
上載者:User

標籤:pre   大於   ima   field   技術分享   asc   The   mongodb   array   

相比關係型資料庫, Array [1,2,3,4,5] 和 Object { ‘name‘:‘DragonFire‘ } 是MongoDB 比較特殊的類型了

特殊在哪裡呢?在他們的操作上又有什麼需要注意的呢?

那我們先建立一條資料,包含 Array 和 Object 類型

db.Oldboy.insert({"name":"路飛學城-騎士計劃","price":[19800,19500,19000,18800],"other":{"start":"2018年8月1日","start_time":"08:30","count":150}})

{    "_id" : ObjectId("5b17d01a49bf137b585df891"),    "name" : "路飛學城-騎士計劃",    "price" : [        19800,        19500,        19000,        18800    ],    "other" : {        "start" : "2018年8月1日",        "start_time" : "08:30",        "count" : 150    }}

好的,這條資料已經完成了

針對這條資料我們進行一系列的操作,並講解使用方式

一.Array  1.把price 中 19000 改為 19300

db.Oldboy.update({"name":"路飛學城-騎士計劃"},{$set:{"price.2":19300}})

我們用了引用下標的方法更改了數值 , "price.2"代指的是 Array 中第3個元素

 

2. 混合用法

如果 price.1 中小於19800 則加 200

db.Oldboy.update({"name":"路飛學城-騎士計劃","price.1":{$lt:19800}},{$inc:{"price.1":200}})

 

把 price 小於 19500  的 自動補上 200

db.Oldboy.updateMany({"name":"路飛學城-騎士計劃","price":{$lt:19500}},{$inc:{"price.$":200}})

細心的同學已經發現了,只改了第一個,是的 $ 這個只儲存一個下標,批量更改的話,嘻嘻嘻嘻截至2017年1月1日,MongoDB沒有這個功能

你只要把這個Array 拿出來,在程式裡面改完,原方不動的放回去不就搞定了嗎

 

二.Object

 這裡像字典,但是這裡更像是 JavaScript 中的 Object 對象

1.把other中 count 改為 199

db.Oldboy.update({"name":"路飛學城-騎士計劃"},{$set:{"other.count":199}})

對了就是在這個對象 打點兒 key 就可以更改數值了 , 要注意的是, 咱們用的 $set 進行修改的,那麼就意味著,如果沒有"other.count"這個field的話,他會自動建立

這個用法就到這裡了,下面我們玩兒個更深的

 

2.混合用法

如果 count 小於 200 那麼 加 10

 

 

三. Array + Object 的用法 

首先,要先建立一條 Document 

{    "_id" : ObjectId("5b17de9d44280738145722b9"),    "name" : "路飛學城-騎士計劃",    "price" : [        {            "start" : "2018年8月1日",            "start_time" : "08:30",            "count" : 150        },        {            "start" : "2018年8月2日",            "start_time" : "09:30",            "count" : 160        },        {            "start" : "2018年8月3日",            "start_time" : "10:30",            "count" : 170        },        {            "start" : "2018年8月4日",            "start_time" : "11:30",            "count" : 180        }    ]}

 

1.把count 大於 175 的field  加 15

混搭完成:

db.Oldboy.update({"price.count":{$gt:175}},{$inc:{"price.$.count":15}})

 

2. 把 count 大於 180 的 start 改為 "2018年8月10日"

 

 

MongoDB三 之 Array Object 的特殊操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.