我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB之数据更新(修改器)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB之数据更新(修改器)

对MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(包含有数组)。所以在进行MongoDB设计的时候就提供有一系列修改器的应用。之前使用的“$set”就是一个修改器。

1、$inc:主要针对于一个数字字段,增加某个数字字段的数据内容:
语法:{"$inc":{"成员":"内容"}}
范例:将年龄为30岁的一个员工的薪水一律1000,年龄加1岁
> db.emp.update({"age":30},{"$inc":{"sal":-1000,"age":1}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":31}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "赵一",
        "sex" : "男",
        "age" : 31,
        "sal" : 8999,
        "loc" : "北京"
}

2、$set:进行内容的重新设置:
语法:{"$set":{"成员":"新内容"}}
范例:将年龄是30岁的某个人员的薪水修改为7999
> db.emp.update({"age":30},{"$set":{"sal":7999}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":30}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7999,
        "loc" : "北京"
}

3、$unset:删除某个成员的内容:
语法:{"$unset":{"成员":1}}
范例:删除“孙三”的年龄和薪水信息
> db.emp.find({"name":"孙三"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
> db.emp.update({"name":"孙三"},{"$unset":{"age":1,"sal":1}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"孙三"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "loc" : "深圳"
}

4、$push:相当于将内容追加到指定的成员之中(基本上是数组):
语法:{"$push":{"成员":value}}
范例:向“孙三”添加2门课程信息(此时孙三信息下没有course信息)
> db.emp.update({"name":"孙三"},{"$push":{"course":["语文","数学"]}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"孙三"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "loc" : "深圳",
        "course" : [
                [
                        "语文",
                        "数学"
                ]
        ]
}

范例:向“李四”添加一门课程信息(此时李四信息下没有course信息)
> db.emp.update({"name":"李四"},{"$push":{"course":"语文"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"李四"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7999,
        "loc" : "北京",
        "course" : [
                "语文"
        ]
}

范例:向“刘A”的课程追加一个“美术”
> db.emp.find({"name":"刘A"}).pretty()
{
        "_id" : ObjectId("599129a00184ff511bf02b87"),
        "name" : "刘A",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京",
        "course" : [
                "语文",
                "数学",
                "英语",
                "音乐",
                "政治"
        ]
}
> db.emp.update({"name":"刘A"},{"$push":{"course":"美术"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"刘A"}).pretty()
{
        "_id" : ObjectId("599129a00184ff511bf02b87"),
        "name" : "刘A",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京",
        "course" : [
                "语文",
                "数学",
                "英语",
                "音乐",
                "政治",
                "美术"
        ]
}

就是进行数组数据的添加操作使用的。如果没有数组则进行新的数组的创建,如果有则进行内容的增加。

5、$pushAll:与“$push”是类似的,可以一次追加多个内容到数组里面:
语法:{"$pushAll":{"成员":数组内容}}
范例:向"周五"里面添加多个课程内容
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
> db.emp.update({"name":"周五"},{"$pushAll":{"course":["美术","音乐"]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京",
        "course" : [
                "美术",
                "音乐"
        ]
}

6、$addToSet:向数组里面增加一个新的内容,只有这个内容不存在的时候才会增加
语法:{"$addToSet":{成员:内容}}
范例:向“周五”的信息增加新的内容
> db.emp.update({"name":"周五"},{"$addToSet":{"course":"舞蹈"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京",
        "course" : [
                "美术",
                "音乐",
                "舞蹈"
        ]
}
此时会判断要增加的内容在数组里面是否存在,如果不存在则向数组之中追加内容,如果存在则不做任何修改操作。

7、$pop:删除数组内的数据
语法:{"$pop":{成员:内容}},内容如果设置为-1表示删除第一个,如果内容设置为1表示删除最后一个
范例:删除周五的第一个课程
> db.emp.update({"name":"周五"},{"$pop":{"course":-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京",
        "course" : [
                "音乐",
                "舞蹈"
        ]
}

范例:删除周五的最后一个课程
> db.emp.update({"name":"周五"},{"$pop":{"course":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京",
        "course" : [
                "音乐"
        ]
}

8、$pull:从数组内删除一个指定内容的数据
语法:{"$pull":{成员:数据}},进行数据比对的,如果是此数据是删除
范例:删除王五的音乐课程信息
> db.emp.update({"name":"周五"},{"$pull":{"course":"音乐"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"周五"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京",
        "course" : [ ]
}

9、$pullAll:一次性删除多个内容
语法:{"$pullAll":{成员:[数据,数据,...]}}
范例:删除“刘A”中的三门课程
> db.emp.find({"name":"刘A"}).pretty()
{
        "_id" : ObjectId("599129a00184ff511bf02b87"),
        "name" : "刘A",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京",
        "course" : [
                "语文",
                "数学",
                "英语",
                "音乐",
                "政治",
                "美术"
        ]
}
> db.emp.update({"name":"刘A"},{"$pullAll":{"course":["语文","数学","英语"]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"name":"刘A"}).pretty()
{
        "_id" : ObjectId("599129a00184ff511bf02b87"),
        "name" : "刘A",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京",
        "course" : [
                "音乐",
                "政治",
                "美术"
        ]
}

10、$rename:为成员名称重命名
语法:{"$rename":{旧的成员名称:新的成员名称}}
范例:将“孙三”的name成员名称修改为“姓名”
> db.emp.find({"name":"孙三"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "loc" : "深圳",
        "course" : [
                [
                        "语文",
                        "数学"
                ]
        ]
}
> db.emp.update({"name":"孙三"},{"$rename":{"name":"姓名"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"姓名":"孙三"}).pretty()
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "sex" : "男",
        "loc" : "深圳",
        "course" : [
                [
                        "语文",
                        "数学"
                ]
        ],
        "姓名" : "孙三"
}

在整个MongoDB数据库里面,提供的修改器的支持很全面。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB之数据更新(修改器)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PgSQL中修改数据自动更新update_time

-- 创建函数CREATE OR REPLACE FUNCTION "upd_timestamp"()RETURNS TRIGGER AS $$BEGIN NEW.update_time = now();       -- updated_time 为自
PgSQL中修改数据自动更新update_time
2019-12-04

mongodb怎么修改数据

修改 mongodb 数据的过程涉及使用 update() 或 updateone() 方法。update() 方法用于更新多个文档,其语法为:db.collection.update(query, update, options)。upd
mongodb怎么修改数据
2024-04-08

php如何把修改数据更新回数据库

要把修改的数据更新回数据库,可以使用PHP中的UPDATE语句。首先,你需要连接到数据库。可以使用mysqli或PDO等PHP扩展来实现数据库连接。然后,构造UPDATE语句,指定要更新的表、要更新的字段以及更新条件。例如:```php$q
2023-08-17

mongodb怎么批量更新数据

MongoDB提供了updateMany()方法来实现批量更新数据。updateMany()方法的语法如下:db.collection.updateMany(,,{upsert: ,writeConcern: ,collation: ,
2023-10-26

mongodb如何批量更新数据

在MongoDB中,可以使用updateMany方法来批量更新数据。该方法接受两个参数,第一个参数是查询条件,用来匹配需要更新的文档,第二个参数是更新操作符和要更新的字段值。例如,假设我们有一个名为users的集合,其中有一个字段stat
mongodb如何批量更新数据
2024-05-11

mongodb如何更新一条数据

在MongoDB中,可以使用update()方法来更新一条数据。更新数据时,需要指定更新条件和更新内容。以下是更新一条数据的基本语法:db.collection.update(,,{upsert:
mongodb如何更新一条数据
2024-04-09

阿里云服务器数据修改命令:轻松实现数据更新

简介在使用阿里云服务器时,有时候我们需要对服务器上的数据进行修改。本文将介绍一些常用的阿里云服务器数据修改命令,帮助您轻松实现数据更新。1.查看服务器数据在进行数据修改之前,首先需要查看服务器上的数据。可以使用以下命令来查看服务器上的文件和目录:```ls```该命令将列出当前目录下的所有文件和目录。如果您想查看其他目
阿里云服务器数据修改命令:轻松实现数据更新
2024-01-30

mongodb如何更新表中所有数据

要更新MongoDB表中的所有数据,可以使用updateMany()方法来更新所有文档。以下是一个示例,它将更新名为"students"的集合中的所有文档的"age"字段为25:```db.students.updateMany({}, {
2023-08-24

mongodb批量更新数据怎么实现

在 MongoDB 中,可以使用 updateMany() 方法来批量更新数据。下面是一个示例:假设有一个名为 users 的集合,其中包含了多个文档。要批量更新这些文档,可以使用以下代码:// 连接数据库const MongoCli
mongodb批量更新数据怎么实现
2024-04-09

mongodb中如何修改字段数据

要修改MongoDB中的字段数据,可以使用update方法来更新文档。以下是一个简单的示例:假设有一个名为users的集合,其中包含一个名为username的字段,现在要将username为“alice”的文档的age字段更新为30:d
mongodb中如何修改字段数据
2024-04-09

编程热搜

目录