• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

mongodb增删改查之数组修改器

Sql admin 3个月前 (05-19) 136次浏览 0个评论 扫描二维码

很多情况下字段的数据类型可能是数组,因此有的时候需要我们去修改数组的数据

添加元素

$push 如果数组已经存在则会向数组的最后加入新的数据,如果数组不存在那么会自动创建一个数组表示。

原始数据如下:

{

    “_id” : ObjectId(“5afd34052c63ae1a943bdb27”),

    “name” : “hello”,

    “friends” : 34.0,

    “enemies” : 2.0

}

{

    “_id” : ObjectId(“5afd347c2c63ae1a943bdb29”),

    “name” : “joe”,

    “friends” : 34.0,

    “enemies” : 4.0

}

现在我们要向其中插入一个数组数据,表示兴趣爱好

db.test.update({"name" : "hello"},{"$push":{"favor":"book1"}})
执行完代码之后
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 34.0, 
    "enemies" : 2.0, 
    "favor" : [
        "book1"
    ]
}
{ 
    "_id" : ObjectId("5afd347c2c63ae1a943bdb29"), 
    "name" : "joe", 
    "friends" : 34.0, 
    "enemies" : 4.0
}

那么问题来了,现在我有很多数据需要向其中导入,不能像上面描述的步骤一个一个导入,那样实在是太慢了,可以使用$each 配合$push 导入

db.test.update({"name" : "hello"},{"$push":{"favor":{"$each":["book2","book3","book4"]}}})
执行完这个代码之后的结果
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 34.0, 
    "enemies" : 2.0, 
    "favor" : [
        "book1", 
        "book2", 
        "book3", 
        "book4"
    ]
}
{ 
    "_id" : ObjectId("5afd347c2c63ae1a943bdb29"), 
    "name" : "joe", 
    "friends" : 34.0, 
    "enemies" : 4.0
}

有的时候需要控制插入数组的数据的长度,比如我只想这个数组只有长度 10,那么我们可以使用$slice 来控制

db.test.update({"name" : "hello"},{"$push":{"favor":{"$each":["1","2","3","4","5","6","7","8","9","10","1"],"$slice":-10}}})
得到的结果如下
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 34.0, 
    "enemies" : 2.0, 
    "favor" : [
        "2", 
        "3", 
        "4", 
        "5", 
        "6", 
        "7", 
        "8", 
        "9", 
        "10", 
        "1"
    ]
}
{ 
    "_id" : ObjectId("5afd347c2c63ae1a943bdb29"), 
    "name" : "joe", 
    "friends" : 34.0, 
    "enemies" : 4.0
}


在上面你会发现最终结果集是最后的 10 个有效数据保存到文档,其实还可以使用$sort 来实现排序,选取按照某种顺序产生的结果。


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mongodb 增删改查之数组修改器
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!