码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB三 之 Array Object 的特殊操作

时间:2018-08-01 22:23:45      阅读:150      评论:0      收藏:0      [点我收藏+]

标签: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 的特殊操作

标签:pre   大于   ima   field   技术分享   asc   The   mongodb   array   

原文地址:https://www.cnblogs.com/guoxiaoyan/p/9403716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!