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.$uset修改器,删除文档中的某个键

> 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修改器可以修改许多类型的数值,如字符串、数组等等

时间: 2024-08-28 14:22:51

MongoDB--使用修改器修改文档的相关文章

MongoDB(二)创建更新删除文档

插入并保存文档操作 用insert向目标集合插入文档,如果没有_id键则会自动添加.最后自动保存. >db.foo.insert({"bar":"baz"}) 如果要批量插入怎么办呢,看下面代码: >db.foo.insert([{"_id":0},{"_id":1},"{"_id":2}]) 以前有一个batchInsert函数,现在已经没有了.注意在批量插入的过程中如果有一个文档插

MongoDB 如何查询和修改内嵌文档

MongoDB是文档型的数据库系统,doc是MongoDB的数据单位,每个doc相当于关系型数据库的数据行(row),doc和row的区别在于field的原子性:row中的column是不和分割的原子对象,而doc中的field可以是原子对象,也可以是内嵌doc(embedded doc),数组等数据类型.内嵌doc中所有field的Key不允许重复. 例如以下doc,contact 字段是内嵌doc. oneDoc= { name:"t1", age:21, contact: { p

MongoDB修改、删除文档的域属性实例

MongoDB修改.删除文档的域属性实例 在网站的开发中,可能最初的设计不合理,或者后期业务的变更,会造成文档结构会有些没用的属性,需要去删除或修改,由于MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每个文档可以拥有各自不同的域属性.MongoDB 中使用 db.collections.update 修改集合中若干文档的... aiyou.com/p/212603aiyou.com/p/212605aiyou.com/p/21260

怎样编辑和修改pdf格式文档

由Adobe公司开发的PDF格式文件具有良好的跨平台优势,能够最大程度保持文档的版面格式的阅读的便利性,但也因为这样,给我们编辑和修改带来了很多问题,在日常工作中,可能很多人都遇到过需要对一份PDF文件进行编辑修改却无从下手的情况,下面读者就教大家如何编辑和修改PDF格式文件. PDF阅读器软件很多,如常见的Adobe reader等,这些软件体积也都比较小巧,但是却不能对PDF文件进行编辑或者编辑功能较单一.捷速PDF编辑器是PDF编辑软件,体积小巧,但是编辑功能确实最强大的,支持修改编辑PD

elasticsearch系列三:索引详解(分词器、文档管理、路由详解)

一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符.处理完后再交给tokenizer进行分词.一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理. tokenizer:分词器,对文本进行分词.一个analyzer必需且只可包含一个tokenizer. token filter:词项过滤器,对to

MongoDB查询集合中的文档

MongoDB查询集合中的文档 参考资料:http://blog.csdn.net/qq_36040184/article/details/54355085 测试: 集合中插入数据 > db.chenji.insert({"name":"张三","年纪":"三年级","年龄":"14"}) WriteResult({ "nInserted" : 1 }) >

修改编辑pdf文档用什么工具

在日常的工作中,我们会经常碰到PDF这种格式的文件,很多时候我们下载到的也都是PDF文档.PDF这中文本格式比较特殊,我们不能对其里面的内容进行编辑修改.但是我们在平日的工作和学习中,经常需要对其进行编辑,这时候就不知道该怎么办了.不用担心,今天小编就教大家PDF编辑该用什么方法. 编辑PDF文档,我们只需用到一个软件就可以了,那就是pdf编辑工具.这是一款小巧而功能并不逊于Adobe Acrobat Reader的PDF阅读器,大小只有几十M,简单易用.pdf每一个PDF文件都包含很多页面,每

怎样可以编辑修改PDF格式文档

接收一些文档文件经常会遇到PDF的格式,这种文档编辑处理起来不像word文档那样简单,很多人也不知道该怎样去编辑修改.对PDF文件编辑,是可以直接对PDF文档内容进行编辑修改,或者将PDF转换成Word文档进行编辑修改的. 直接对PDF文件进行编辑修改,需要用PDF编辑器来打开文档.(注意不是PDF阅读器,阅读器不能修改编辑PDF文件) 打开文档后选择编辑内容工具,就可以对内容进编辑修改了,上面的文字也是在文本框中进行操作的,可以选择添加文本工具在页面中插入新的文本框,输入文本内容. 设置文本格

【转】 修改vs2010帮助文档(MSDN)路径

VS2010的MSDN采用代理网页的方式,规定首次确定目录后不能更改本地Help Library的路径,只好手动变更路径 第一步: 先把MSDN装好,先装在C盘,默认的路径 第二步 现在我要把MSDN移动到E:/vs2010HelpLibrary/目录下   打开注册表,HKEY_LOCAL_MACHINE –> SOFTWARE –> Microsoft –> Help –> v1.0,可以在localStore项中看到帮助文档的当前路径.将该目录下所有文件剪切到 E:/vs20