`
runfriends
  • 浏览: 228896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongo简介——update & findAndModify

阅读更多

由于发现mongo更新太快,跟我之前所学有很多差异;尤其是聚合操作,比较早的版本只有group和mapreduce两个函数,不支持avg、max、min、sum这些操作,现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能。

从这一篇开始将按照这个url里面的内容介绍:http://docs.mongodb.org/manual/reference/operator/

 

撰写博客的顺序按照第二个页面里面的操作符字母顺序,将分别按照增、删、改、查、聚合四个主题更新博客文章。

在介绍到某个操作关键字时如果相关必要的方法还没有介绍,就插入一篇介绍这个方法的博文。

比如说第一个要介绍的是$addToSet,这个操作符,但是它只能用于update操作,而update在之前的博文中还没有介绍过,于是这一篇就介绍下update的相关参数。下一篇再介绍$addToSet

 

db.COLLECTION_NAME.update({},{},true|false,true|false);

第一个参数是查询选择器,与findOne的参数一样,相当于sql的where子句

第二个参数是更新操作文件,由各种更新操作符和更新值构成,

第三个参数是upsert。如果是true,表示如果没有符合查询选择器的文档,mongo将会综合第一第二个参数向集合插入一个新的文档。

第四个参数是multi。true:更新匹配到的所有文档,false:更新匹配到的第一个文档,默认值

第三第四个参数也可以合并成一个:

db.COLLECTION_NAME.update({},{},{multi:true|false,upsert:true|false});

 

拥有类似事务特性的更新与查询操作——findAndModify.

非常奇怪的是,在上面的链接里面没有找到这个函数的定义。

它是原子性的,会返回符合查询条件的更新后的文档。

一次最多只更新一个文档,也就是条件query条件,且执行sort后的第一个文档。

db.COLLECTION_NAME.findAndModify({query:{},

                                                                update:{},

                                                                remove:true|false,

                                                                new:true|false,

                                                                sort:{},

                                                                fields:{},

                                                                upsert:true|false});

query是查询选择器,与findOne的查询选择器相同

update是要更新的值,不能与remove同时出现

remove表示删除符合query条件的文档,不能与update同时出现

new为true:返回个性后的文档,false:返回个性前的,默认是false

sort:排序条件,与sort函数的参数一致。

fields:投影操作,与find*的第二个参数一致。

upsert:与update的upsert参数一样。

 

不论是update的第二个参数,还是findAndModify的update,在不指定更新操作符的情况下,将会用指定的新值替换旧值。

比如,

use iteye;

db.blog.update({_id:ObjectId('......')},{title:'new title'});

//上面的操作就把指定_id的文档的标题改成了‘new title’

 

如果指定了更新操作符,就可以实现更复杂灵活的更新操作。可以通过更新操作符,增加或减少数值,针对数组类型的属性,做类似队列或栈的操作。单从这一点来说,mongo要比sql数据库强大的多了。

$addToSet:http://runfriends.iteye.com/blog/1830751

$bit:http://runfriends.iteye.com/blog/1831533

0
0
分享到:
评论

相关推荐

    MongoVUE-1.6.9 & 破解文件

    windows下mongo客户端,MongoVUE-1.6.9 & 破解文件

    java mongo jar包 && 完整权限配置

    mongo-java-driver-3.4.1.jar spring-data-commons-1.10.0.RELEASE.jar spring-data-commons-core-1.4.1.RELEASE.jar spring-data-mongodb-1.7.0.RELEASE.jar mongodb.xml mongodb.properties 补充说明:mongo服务器...

    Noteet-api:使用ExpressJS的Noteet后端

    Noteet的后端记事本应用程序的后端 :person_tipping_hand: ,由expressjs制作如何使用叉它克隆它创建一个mongodb集群/数据库添加一个.env文件并插入: MONGO_USER = <在这里输入来自mongodb服务器的用户名> MONGO...

    Express-boilerplate:准备好用于您的下一个react-api的样板,并带有现成的身份验证逻辑,模型和路由

    MONGO_CONNECTION_STRING = mongodb + srv:// $ {MONGO_USER}:$ {MONGO_PSW} @ $ {MONGO_SERVER} / $ {MONGO_DB}?retryWrites = true&w = majority ACCESS_TOKEN_SECRET = <在此处输入一个有助于您生成

    warehouse-crane:我们团队 JEA 的 IndustryHack 黑客马拉松项目

    安装 Mongo: brew update && brew install mongodb 安装 NPM: brew install npm 运行服务器 First, start the database locally, run 'mongod --dbpath ~/dev/db', where ~/dev/db is the location of the ...

    mongodb_exporter监控 https://github.com/dcu/mongodb_exporter.git 下19年4月的编译结果文件

    mongodb_exporter监控 https://github.com/dcu/mongodb_exporter.git 下19年4月的编译结果文件 编译很麻烦 ,注意修改文件的可执行权限

    阿里mongo同步工具mongo-shake

    阿里mongo同步工具mongo-shake正是为了解决这些问题而设计的。 Mongo-shake 是阿里巴巴开发的一款高效、稳定且易于使用的MongoDB数据迁移工具,主要用于实现MongoDB集群之间的数据同步。它支持全量数据迁移和增量...

    spring-vue-mongo-crud:Spring&Vue&MongoDB CRUD操作

    Spring-Vue-Mongo-Crud Spring&Vue&MongoDB CRUD操作 执照 MIT License Copyright (c) 2021 Nejdet Kadir Bektaş Permission is hereby granted, free of charge, to any person obtaining a copy of this ...

    php_mongo_5.2.6.6

    PHP为了方便开发者与MongoDB数据库打交道,提供了专门的MongoDB扩展——php_mongo。本文将详细介绍标题为"php_mongo_5.2.6.6"的扩展,它是专为PHP 5.2.6版本设计的一个重要组件。 一、php_mongo扩展简介 php_mongo...

    mongo-cxx-driver

    `mongo::Update`和`mongo::Remove`类分别用于构造更新和删除操作。你可以根据条件选择性地更新或删除文档。 #### 7. 索引与性能优化 `mongo::IndexSpec`用于定义索引,通过`collection.ensureIndex(index)`创建索引...

    mongo-scala-drive的使用demo

    在 Scala 中与 MongoDB 进行交互,通常我们会使用 `mongo-scala-driver`,而不是 `mongo-java-driver`,因为 Scala 驱动提供了更符合 Scala 语言特性的 API 设计。本示例将详细介绍如何使用 `mongo-scala-driver` ...

    mongoTemplate工具类Dao层方法封装.zip

    - **更新(Update)**:使用`updateFirst()`, `updateMultiplte()`或`replaceOne()`进行文档更新,可以配合Update对象定义更新操作。 - **删除(Delete)**:`remove()`, `deleteOne()`, `deleteAll()`用于删除...

    MongoVUE1.6.9破解

    mongoVUE.1.6.9.破解文件,解压后覆盖安装目录中的MongoVUE.exe文件 安装文件下载地址:http://www.mongovue.com/downloads/

    mongoDB mongoVUE

    MongoVUE还提供了丰富的命令行工具,如`db.collection.insert()`, `db.collection.find()`, `db.collection.update()`等,以满足不同需求。 5. **索引管理**:对于优化查询性能,MongoVUE允许用户创建、查看和删除...

    mongo_plugin.zip

    用户可以直接在界面上编写和执行MongoDB查询语句,如`find()`, `update()`, `insert()`, 和 `delete()`。 4. 文档编辑:对于单个文档,插件提供了一个编辑器,允许用户以键值对的形式修改数据,同时也支持JSON格式...

    mongo.tar 镜像

    mongo docker 镜像

    Spring Data MongoDB : Update document

    如果你知道要更新的字段,可以使用`MongoRepository`提供的`update`方法,直接对特定字段进行修改,而无需先加载整个文档。例如: ```java userRepository.updateFirst( Query.query(Criteria.where("id").is(...

    update-mongo:在Node中运行MongoDB更新Stript的简单方法

    使用update-mongo界面,您可以轻松地为mongo shell编写脚本并在代码执行期间运行它们。 update-mongo允许您运行MongoDB的更新脚本,而无需与进行交互。 这是MIT许可下的一个开源项目,有关更多信息,请参见 。 跳...

    mongoTemplate实现统计和分组

    "MongoDB 使用 MongoTemplate 实现统计和分组" MongoDB 是一个非常流行的 NoSQL 数据库,它可以存储大量的数据,但是有时候我们需要对这些数据进行分析和利用。在本文中,我们将介绍如何使用 MongoTemplate 实现...

    MongoVUE-Installer

    MongoVUE是一款强大的MongoDB数据库管理系统,专为简化MongoDB的可视化操作而设计。它提供了一个直观的图形用户界面(GUI),使得数据库的管理和数据操作变得更加便捷,尤其适合那些不熟悉命令行界面或者希望提高...

Global site tag (gtag.js) - Google Analytics