MongoDB--使用修改器修改文档
可以使用修改器啦修改文档,比如增加、删除文档的键值。使用修改器首先要定位到某个文档, 然后再增加相应的修改选项,需要使用update语句
1.$inc修改器修改文档
> db.users.findOne({'name':'cd'});
{
"_id" : ObjectId("584eafa97629396db95535da"),
"name" : "cd",
"sex" : "M",
"information" : {
"age" : 23,
"address" : "Shanghai"
}
}
> db.users.update({"name": "cd"},
... {"$inc":{"qq": 123456789}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.findOne({'name':'cd'});
{
"_id" : ObjectId("584eafa97629396db95535da"),
"name" : "cd",
"sex" : "M",
"information" : {
"age" : 23,
"address" : "Shanghai"
},
"qq" : 123456789
}
>
命令解释:
db.users.findOne() -->查询某个文档,可以添加具体的参数,只返回一个文档,如上例子查询文档键name的值为cd的该文档
db.users.update() -->更新某个文档,一般带有两个参数,一个参数定位到更新那个文档,另一个参数设置修改内容
{"$inc":{"key" : "value"}}-->修改键key对应的值,若key不存在,则创建key
流程:
1.首先查询name为cd的文档,看文档里面的具体键值
2.使用修改器$inc和更新语句更新集合中的文档
3.再次查询name为cd的文档,和步骤1的查询结果对比,看更新文档是否成功
2.$set修改器修改文档
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549695a14618fbeef3bf0f"),
"name" : "scd",
"sex" : "M",
"address" : "上海"
}
> db.users.update( {"name":"scd"},
... {"$set":{"lang": ["中文", "english"]}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549695a14618fbeef3bf0f"),
"name" : "scd",
"sex" : "M",
"address" : "上海",
"lang" : [
"中文",
"english"
]
}
>
3.$unset修改器,删除文档中的某个键
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549885a14618fbeef3bf11"),
"name" : "scd",
"sex" : "M",
"address" : "上海",
"lang" : [
"中文",
"english"
]
}
> db.users.update({"name":"scd"},
... {"$unset":{"sex":"M"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549885a14618fbeef3bf11"),
"name" : "scd",
"address" : "上海",
"lang" : [
"中文",
"english"
]
}
>
操作结果:删除键name值为scd文档的键sex
4.$set和$inc修改器的区别
$inc只能由于修改整型、长整型或双精度浮点型的值
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549885a14618fbeef3bf11"),
"name" : "scd",
"address" : "上海",
"lang" : [
"中文",
"english"
]
}
> db.users.update({"name":"scd"},
... {"$inc":{"address": "北京"}});
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 14,
"errmsg" : "Cannot increment with non-numeric argument: {address: \"鍖椾含\"}"
}
})
使用$inc修改键对应的数值为字符串会报错 "writeError"
而使用$set可以修改键对应的值为字符类型的数值
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549885a14618fbeef3bf11"),
"name" : "scd",
"address" : "上海",
"lang" : [
"中文",
"english"
]
}
> db.users.update({"name":"scd"},
... {"$set":{"address":"北京"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.findOne("name":"scd");
2016-12-17T09:55:20.213+0800 E QUERY [thread1] SyntaxError: missing ) after argument list @(shell):1:23
> db.users.findOne({"name":"scd"});
{
"_id" : ObjectId("58549885a14618fbeef3bf11"),
"name" : "scd",
"address" : "北京",
"lang" : [
"中文",
"english"
]
}
>
$set修改器可以修改许多类型的数值,如字符串、数组等等
MongoDB--使用修改器修改文档的更多相关文章
- MongoDB(二)创建更新删除文档
插入并保存文档操作 用insert向目标集合插入文档,如果没有_id键则会自动添加.最后自动保存. >db.foo.insert({"bar":"baz" ...
- MongoDB查询或修改内嵌文档
作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用.文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded) ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一.分词器 1. 认识分词器 1.1 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...
- MongoDB数据库、集合、文档的操作
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- mongodb的基本操作与插入文档(document)
一.mongodb的基本操作: 1.查看mongodb当前所有的databases : show dbs 2.选择数据库(database) : use databaseName(该数据库不存在则会自 ...
- # Zombie Gunship Survival(僵尸炮艇生存)GG修改器修改教程
Zombie Gunship Survival(僵尸炮艇生存)GG修改器修改教程 1.修改伤害,打击范围,武器冷却时间,子弹容量 测试手机机型:华为畅享7 系统版本:Android7.0 是否ROOT ...
- 【转】 修改vs2010帮助文档(MSDN)路径
VS2010的MSDN采用代理网页的方式,规定首次确定目录后不能更改本地Help Library的路径,只好手动变更路径 第一步: 先把MSDN装好,先装在C盘,默认的路径 第二步 现在我要把MSDN ...
- configparser模块——用于生成和修改常见配置文档
配置文档格式 [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [b ...
随机推荐
- 怎么查看和修改 MySQL 的最大连接数?
一. 查看Mysql当前配置 MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看 mysql> show variables like '%connections ...
- Uva 12361 File Retrieval 后缀数组+并查集
题意:有F个单词,1 <= F <=60 , 长度<=10^4, 每次可以输入一个字符串,所有包含该字串的单词会形成一个集合. 问最多能形成多少个不同的集合.集合不能为空. 分析:用 ...
- Delphi捕捉DLL执行所抛出的异常。
先来说一下我如何写我的Dll文件的. 先看代码: 代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://w ...
- [转] KMP算法详解
转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的K ...
- 处理Selection对象和Range对象——Word VBA中重要的两个对象
处理Selection对象和Range对象——Word VBA中重要的两个对象 Word 开发人员参考Selection 对象代表窗口或窗格中的当前所选内容.所选内容代表文档中选定(或突出显示)的区域 ...
- ruby编程语言-学习笔记5(第5章 语句和控制结构)
以下是2种表达方式一样. if expression code end if expression then #推荐这种形式 code end expression的值不是false或nil,则cod ...
- 关于HTTP返回码301、302区别与SEO
301(永久移动)请求的网页已永久移动到新位置.服务器返回此响应时,会自动将请求者转到新位置.您应使用此代码告诉搜索引擎Spider某个网页或网站已永久移动到新位置.建议在URL规范化的时候采用301 ...
- FZU2090 旅行社的烦恼 巧妙floyd 最短路
分析:floyd看似很好理解,实际上是状态转移,具体的解释参照这里 http://www.cnblogs.com/chenying99/p/3932877.html 深入理解了floyd后,这个题就可 ...
- Soap UI 数据库脚本(转)
3:在SoapUI的Test Case中新建Groovy Script连接数据库 接口如下 def sql = Sql.newInstance( 地址, 用户名, 密码, 驱动 ) 实现样例如下: i ...
- dataframe 数据统计可视化---spark scala 应用
统计效果: 代码部分: import org.apache.spark.sql.hive.HiveContext import org.apache.spark.{Logging, SparkConf ...