今天继续很久没学习的mongodb的简单学习,今天来看的是更新。先来看简单的用法:
use updatetest
>switched to db updatetest
首先插入一下:
db.things.insert( { name : "test1"} )
db.things.find({name : "test1"})
会找到:
{ "_id" : ObjectId("50f1778ea5ec290b7773303b"), "name" : "test1" }
更新的格式为:
db.collection.update( criteria, objNew, upsert, multi )
参数:
criteria - 查询需要更新的项;
objNew - 更新的对象或者 $ operators (例如 $inc) 这样的操作因子
upsert - 是否是 "upsert"; 也就是说如果记录不存在是否插入新的记录
multi - 是否所有满足criteria的在整个文档都更新
注意:在缺省情况下,update()只会更新第一个满足条件的项。如果需要修改所以的满足条件的
项的话,需要使用multi这个标志位。
db.things.update({name: "test1"}, {name: "test2"})
再find一下
db.things.find({name : "test2"})
会发现有test2了;
再来:
db.things.update({name : "hello"}, {name: "hello,abc"}, true);
注意参数true这里的用法,结果为,因为hello没有,所以只会插入
hello,abc了。
也可以写成:
db.things.update({name : "hello"}, {name: "hello,abc"}, { upsert: true });
注意:
1、update方法只更新一条记录
默认情况下update只更新符合查询条件的第一条找到的记录。如果想更新所有符合条件的记录,需要手动添加 multi 这个参数。
2、update方法的更新参数
像下面这个语句
updatetest.update( { _id: X }, {name: "Joe", age: 20 });
会把符合条件的原纪录按照{name: "Joe", age: 20 }完整替换,而不是简单的将name设为"Joe",age设为20.
如果只想更改这2个值,而不是替换完整对象,应该写
updatetest.update( { _id: X },{$set: {name: "Joe", age: 20 }});
$inc的用法,比如统计经常要用到了,如:
db.things.update({BlogPost: "How To Do Upserts"}, {$inc: {Hits: 1}}, { upsert: true });
db.things.find({BlogPost : "How To Do Upserts"})
>{ "_id" : ObjectId("50f17b4541c33bd2459aafed"), "BlogPost" : "How To Do Upserts", "Hits" : 1 }
再多运行两次:
db.things.update({BlogPost: "How To Do Upserts"}, {$inc: {Hits: 1}}, { upsert: true });
db.things.update({BlogPost: "How To Do Upserts"}, {$inc: {Hits: 1}}, { upsert: true });
>db.things.find({BlogPost : "How To Do Upserts"})
>{ "_id" : ObjectId("50f17b4541c33bd2459aafed"), "BlogPost" : "How To Do Upserts", "Hits" : 3 }
可以看到,hits变为3了。
multi的用法:
比如:
db.Indexing.insert( { name : "Denis", age : 10 } )
db.Indexing.insert( { name : "Denis", age : 20 } )
db.Indexing.insert( { name : "Denis", age : 30 } )
要将所有的denies的age都更新,必须加行multi:
db.Indexing.update({name: "Denis"}, {$set: {age: 42}},{ multi: true })
分享到:
相关推荐
MongoDB是一种分布式文档型数据库,它以其灵活性、高性能和易扩展性在现代Web应用程序中备受青睐。本篇文章将深入探讨MongoDB的核心概念、主要特点、安装配置、数据模型、查询操作以及高级特性。 1. MongoDB核心...
在本实验中,我们将学习如何在 Windows 和 Linux 环境下安装 MongoDB,并了解 MongoDB 的基本操作。 一、MongoDB 安装 ### Windows 环境下安装 MongoDB 1. 下载 MongoDB Windows 版 2. 设置数据文件和日志文件的...
以下是对MongoDB学习的一些关键知识点的详细解释: 1. **MongoDB的基本概念**:MongoDB以集合(Collections)的形式存储数据,集合相当于关系型数据库中的表。集合内包含文档(Documents),文档是JSON格式的数据...
通过深入学习和实践上述知识点,可以更好地理解和运用MongoDB来构建高效、可靠的数据存储和处理系统。提供的文档如“mongodb常用命令.doc”和“mongodb使用指南.ppt”会进一步细化这些概念,并可能包含更多实用技巧...
MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...
### MongoDB在北京2014大会中的应用案例——快的打车 #### 一、快的打车业务背景 ...通过对这些实践案例的学习和总结,我们可以更好地理解MongoDB的优势与不足,为未来的项目选择合适的数据库提供参考。
最后,`mongodb总结`可能是作者对MongoDB学习过程中的关键点、难点和实践经验的提炼。这可能包括一些常见问题的解决方案,最佳实践的汇总,以及在实际项目中应用MongoDB的经验分享。 总的来说,这些资源将帮助学习...
### MongoDB入门知识点详解 #### 一、NoSQL简介与MongoDB概述 ...通过上述知识点的学习,相信您已经对MongoDB有了初步的认识,接下来可以进一步深入研究其高级特性,以便更好地应用于实际项目中。
9. **最佳实践**:总结MongoDB的使用过程中应遵循的一些最佳实践,以确保数据库的稳定性和效率。 10. **案例研究**:可能包含一些实际项目中的应用案例,展示MongoDB在不同场景下的解决方案。 通过深入学习和交流...
通过阅读这份"MongoDB总结"文件,学习者将能够掌握MongoDB的基本概念、操作以及在实际项目中的应用,为进一步学习和使用MongoDB打下坚实基础。利用Markdown格式,内容易于阅读和理解,结合Typora等编辑器,学习体验...
通过这个示例,开发者可以学习到如何在ABP中配置MongoDB连接,创建MongoDB仓储,使用工作单元进行事务管理,以及如何通过依赖注入来灵活地使用这些组件。这将有助于提升你在ABP框架下构建复杂分布式系统的技能。
在MongoDB中,数据以键值对的BSON格式存储,这种格式紧凑且高效,适合网络传输。MongoDB利用内存映射文件来优化读写性能,使得数据访问更为迅速。此外,MongoDB还支持复制和分片,确保数据的冗余和可扩展性。 在...
在Node.js应用程序中连接MongoDB数据库,通常涉及以下几个步骤: 1. **引入MongoDB模块**: ```javascript const MongoClient = require('mongodb').MongoClient; ``` 2. **定义连接字符串**: ```javascript ...
总结起来,MongoDB C Driver 1.13.0 64 release为C/C++开发者提供了一个强大且高效的工具,以访问和操作MongoDB数据库,其64位版本尤其适合处理大数据量和高负载的环境。开发者在使用时,需要充分理解其API和工作...
- 为了方便使用 MongoDB 的命令行工具,可以将 MongoDB 的安装路径添加到系统的环境变量中。 - 在控制面板中打开“系统”->“高级系统设置”->“环境变量”。 - 在“系统变量”中找到并编辑 `Path` 变量,添加 ...
本书被公认为MongoDB学习与使用的宝典,深入浅出地介绍了MongoDB的各个方面,从基本概念到高级特性,为读者提供了一个全面的视角来理解和掌握这一领先的NoSQL数据库系统。 ### MongoDB的知识点 #### MongoDB简介 ...