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 ...
随机推荐
- BZOJ 2442: [Usaco2011 Open]修剪草坪
Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠.然而,FJ的草坪非常脏乱,因此,FJ只能够让他的 ...
- zoj 3761
很简单但很虐心的一道题: 我感觉自己的算法没错,但是老是过不了:= = 但是还是把代码贴出来: 我的方法,用并查集的方式做一课树,然后对树进行遍历: 有多少棵树就有多少个点剩余: #include&l ...
- IBM
http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1306mongodb2/
- ***PHP多线程pthreads 实现QQ号码爬虫
通过空间历史浏览,爬出查看你空间的人(一般限制20人,除非开通黄钻),然后在爬出这20人的浏览记录,依次向下爬,你可以控制爬行深度.这里仅仅给出怕中代码片段,你可以进一步优化,将QQ分类存储.通过QQ ...
- POJ 3349 Snowflake Snow Snowflakes(哈希)
http://poj.org/problem?id=3349 题意 :分别给你n片雪花的六个角的长度,让你比较一下这n个雪花有没有相同的. 思路:一开始以为把每一个雪花的六个角的长度sort一下,然后 ...
- 【 NOIP2015 DAY1 T2 信息传递】带权并查集
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- Windows7 64下MinGW64/MSYS环境搭建
原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64 http://www.kinetic ...
- POJ 1840 Eps 解题报告(哈希)
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0,xi∈[-50,50],且xi!=0.让我们求所有解的可能. 首先,如果暴力判断的话,每个x的取值有100种可能,100^5肯定 ...
- 手机端的mousedown
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Matlab read_grib.r4 安装新方法(转自:http://blog.sina.com.cn/s/blog_9f36648b010179s7.html)
最近,打算用Matlab处理些GRIB格式的文件,需要在Matlab中添加read_grib.m文件,其实相当于是添加一个工具箱.read_grib.m的下载见:http://www.renci.or ...