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 ...
随机推荐
- 一些常用的jQuery插件
1. X-editable 这个插件能够让你在页面上创建可编辑的元素.它能够使用任何引擎(bootstrap.jquery-ui.jquery),并且包含弹出式和内联模式. 2. Garlic.js ...
- Codeforces Round #208 (Div. 2)
A - Dima and Continuous Line 水题:直接模拟: #include<cstdio> #define maxn 1005 using namespace std; ...
- android对大图片的缓存处理
废话不多说,直接上代码 package com.huge.emj.common.util; import java.io.File; import java.io.FileInputStream; i ...
- 怎样在WINDOWS下面编译LIBCURL
我测试过,好像没OK This is a short note about building cURL with SSL support on Windows. Tools required: cUR ...
- ANDROID_MARS学习笔记_S01原始版_008_Handler(异步消息处理机制)
一.流程 1.点击按钮,则代码会使handler把updateThread压到队列里去,从而执行updateThread的run() 2.run()里会通过msg.arg1 = i 和bundle来写 ...
- 常用的SQL分页算法及对比
SQL Server 2005引入的新方法. SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY keyField DESC) AS rowNum, * ...
- Which are in?
Which are in? Given two arrays of strings a1 and a2 return a sorted array in lexicographical order a ...
- 应付发票审批 Hold and Release Names
(N) AP > Setup > Invoice > Hold and Release Names 这里一般默认就可以了.Use the Invoice Hold and Relea ...
- JSOI2009 游戏
1443: [JSOI2009]游戏Game Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 557 Solved: 251[Submit][Stat ...
- [Buffalo]MVC架构模式
MVC架构模式:即Model(模型)-View(视图)-Controller(控制器). 很多人将MVC和所谓的“三层架构”进行比较,其实两者并没有什么可比性,MVC更不是分别对应着UI.业务逻辑和数 ...