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

MongoDB中怎么实现一个更新函数

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

MongoDB中怎么实现一个更新函数

MongoDB中怎么实现一个更新函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。


在MongoDB里面对于数据的更新操作提供了两类函数:save()、update()

如果要修改数据最直接的使用函数就是update()函数,但是这个函数的语法要求很麻烦。
语法:db.集合.update(更新条件,新的对象数据(更新操作符),upsert,multl)
  ● upsert:如果要更新的数据不存在,则增加一条新的内容(true为增加,false为不增加)。
  ● multi:表示是否只更新满足条件的第一行记录,如果设置为false,只更新第一条,如果设置为true全更新。

范例:更新存在的数据---将年龄是30岁的薪水更新为8000(此时会返回多条数据)
只更新第一条数据:
> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "赵一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "钱二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}


> db.emp.update({"age":30},{"$set":{"sal":9999}},false,false);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "赵一",
        "sex" : "男",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "钱二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}

所有满足条件的数据都更新:
> db.emp.update({"age":30},{"$set":{"sal":9999}},false,true);
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 4 })
> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "赵一",
        "sex" : "男",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "钱二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孙三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}

范例:更新不存在的数据
> db.emp.update({"age":55},{"$set":{"name":"不存在"}},true,false);
WriteResult({
        "nMatched" : 0,
        "nUpserted" : 1,
        "nModified" : 0,
        "_id" : ObjectId("5991629aca6455d4a46870f6")
})
> db.emp.find({"age":55}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 55, "name" : "不存在" }

此时相当于进行了数据的创建。
那么除了update()之外,还提供了一个save()函数,这个函数的功能与更新不存在的内容相似。

范例:使用save()操作
> db.emp.find({"age":55}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 55, "name" : "不存在" }
> db.emp.save({"_id" : ObjectId("5991629aca6455d4a46870f6"),"age":56});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":56}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 56 }
> db.emp.save({"_id" : ObjectId("5991629aca6455d4a46870f6"),"age":56,"name":"stone"});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":56}).pretty();
{
        "_id" : ObjectId("5991629aca6455d4a46870f6"),
        "age" : 56,
        "name" : "stone"
}

使用save,只会保留在save中出现的字段。如果数据不存在,则插入。

> db.emp.save({"age":58,"name":"stone1"});
WriteResult({ "nInserted" : 1 })
> db.emp.find({"age":58}).pretty();
{
        "_id" : ObjectId("599164db0184ff511bf02b96"),
        "age" : 58,
        "name" : "stone1"
}

对应的id数据存在了,就是更新操作。要保存的数据不存在(不能保存"_id"),就变成了增加操作。
建议使用update,尽量少用save。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

免责声明:

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

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

MongoDB中怎么实现一个更新函数

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

下载Word文档

猜你喜欢

mongodb批量更新数据怎么实现

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

mongodb怎么更新数组的某个元素

要更新MongoDB中数组的某个元素,可以使用`$set`操作符和数组索引来更新指定位置的元素。例如,假设有一个名为`users`的集合,其中包含一个名为`favorites`的数组。我们想要更新`favorites`数组中索引为2的元素为
2023-08-24

PHP中怎么实现一个分页函数

PHP中怎么实现一个分页函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。写列表性质的页面,几乎都要写上一段分页的程序。最近小阳终于决心一劳永逸——
2023-06-17

C#中怎么实现一个取整函数

本篇文章为大家展示了C#中怎么实现一个取整函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#取整函数使用实例:Math.Round是"就近舍入",当要舍入的是5时与"四舍五入"不同(取偶数),如
2023-06-17

C#中怎么实现一个回调函数

C#中怎么实现一个回调函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是C#回调函数?C#回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于
2023-06-18

Java8中怎么实现一个函数式接口

这篇文章给大家介绍Java8中怎么实现一个函数式接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。以下我们继续深入Java8函数式编程模型public class Test1 { public static void
2023-05-30

Python中怎么实现一个生成器函数

Python中怎么实现一个生成器函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.生成器在 Python 中,一边循环一边计算的机制,称为生成器(Generator);生成
2023-06-02

怎么在Shell脚本中实现一个ftok函数

怎么在Shell脚本中实现一个ftok函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。#!/bin/shlet key=0function ftok() { pat
2023-06-09

Golang中怎么实现一个不可重入函数

Golang中怎么实现一个不可重入函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。场景用例某个服务是对某些条件进行轮询,每秒监视一些状态。我们希望每个状态都可以独立地检查,而
2023-06-04

vbs中怎么实现一个字符串分割函数

这篇文章给大家介绍vbs中怎么实现一个字符串分割函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Function CutAndJoin(sSource, iLong, sJoiner) Dim I, N N = Le
2023-06-08

C++中怎么实现一个字符串替换函数

这篇文章将为大家详细讲解有关C++中怎么实现一个字符串替换函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++字符串替换函数代码如下:@brief 实现字符串替换 @param or
2023-06-17

C#中怎么实现一个截取字符串函数

C#中怎么实现一个截取字符串函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#截取字符串函数实例://C#截取字符串函数 public string Cu
2023-06-17

怎么在Android应用中实现一个程序更新下载功能

这期内容当中小编将会给大家带来有关怎么在Android应用中实现一个程序更新下载功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。创建一个新类,名为UpdateManager,代码如下:import ja
2023-05-31

利用Java怎么实现一个同步函数

本篇文章为大家展示了利用Java怎么实现一个同步函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下://同步
2023-05-31

怎么在Java8项目中实现一个函数式编程

这期内容当中小编将会给大家带来有关怎么在Java8项目中实现一个函数式编程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。函数式的思考命令式编程一般我们实现一个系统有两种思考方式,一种专注于如何实现,比如下
2023-05-31

编程热搜

目录