MongoDB通过forEach循环实现Replace

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB通过forEach循环实现Replace

MongoDB没有提供replace操作,需要通过forEach循环实现, 支持JavaScript语法


forEach循环实现Replace操作实例


1、插入一条数据
db.getCollection('blog').insert({'title': 'oldTitle'})
2、查看数据
db.getCollection('blog').find({})
/* 1 */
{
    "_id" : ObjectId("5dfb5a491699d4334f25b354"),
    "title" : "oldTitle"
}
3、使用save方式保存数据 old->new
db.getCollection("blog").find({
    _id: ObjectId("5dfb5a491699d4334f25b354")
}).forEach(function(item) {
    item.title = item.title.replace('old', "new");
    db.getCollection("blog").save(item); 
});
4、查看替换后的数据
db.getCollection('blog').find({})
/* 1 */
{
    "_id" : ObjectId("5dfb5a491699d4334f25b354"),
    "title" : "newTitle"
}
5、使用update方式更新 new->old
db.getCollection("blog").find({
    _id: ObjectId("5dfb5a491699d4334f25b354")
}).forEach(function(item) {
    title = item.title;
    title = title.replace('new', "old");
    db.getCollection("blog").update({_id:item._id},{$set:{title: title}});  
});
6、查看数据,已经修改了
db.getCollection('blog').find({})
/* 1 */
{
    "_id" : ObjectId("5dfb5a491699d4334f25b354"),
    "title" : "oldTitle"
}

总结

使用forEach + save方式实现replace,代码较为简洁,出错概率较低


db.getCollection("blog").find({
    _id: ObjectId("5dfb5a491699d4334f25b354")
}).forEach(function(item) {
    item.title = item.title.replace('old', "new");
    db.getCollection("blog").save(item); 
});

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL 安全 Java
SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
自己本科时候一直使用的是Mysql,目前的课题组使用的是MongoDB,因此就花了一部分时间整理了一下,实现springboot与MongoDB的整合,并且实现基本的增删改查操作,从头到尾给出一个完整的案例。
707 0
SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
|
存储 NoSQL Java
mongodb基于地理位置查询实现围栏
mongodb基于地理位置查询实现围栏
1336 0
|
存储 缓存 NoSQL
分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
YFMongoDBModelBase类是个模板类,对模板参数进行了约束YFMongoEntityBase,必须要继承YFMongoEntityBase
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
|
SQL NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
MongoDB中的ID是一个hash码,和传统的关系数据库相比MongoDB没有办法实现ID的自增,如果需要ID自增的话,所以要自己管理ID,并且把对应类型的ID写入到一个专门的Collection(其实就是Sql中的Table)里面去,每次创建新对象的时候,都要取到该类型当前的ID,然后在这个基础上+1,比如当前是角色的ID是1,又创建了一个新的角色,要在原来的基础上+1 ID=2。今天先把MongoDB的对象实体基类实现了。
|
JavaScript NoSQL MongoDB
Node(九)之Node配合MongoDB实现简单的注册登录
Node(九)之Node配合MongoDB实现简单的注册登录
77 0
|
存储 NoSQL JavaScript
利用JQuery上传插件Uploadify实现图片上传MongoDB并预览
利用JQuery上传插件Uploadify实现图片上传MongoDB并预览
214 0
|
NoSQL MongoDB
MongoDB Database Tools 安装实现备份、恢复
MongoDB Database Tools 安装实现备份、恢复
327 0