当前位置: 首页 > 编程日记 > 正文

MongoDB修改器的使用1

为什么要使用修改器? 

   通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成。

1."$set"修改器

   "$set"用来指定某个字段,如果不存在,则创建。这对部分更新或者添加来说就非常方便了。

如:

 step1:往users数据库长如一条数据,通过JavaScript来完成:

   var logs={name:"joe",age:30,sex:"female",location:"Wisconsin"}

   logs

 运行:

1 /* 1 */
2 {
3     "name" : "joe",
4     "age" : 30.0,
5     "sex" : "female",
6     "location" : "Wisconsin"
7 }

step2:放入users数据库

  db.users.insert(logs)

查询结果:

  db.users.find()

/* 1 */
{"_id" : ObjectId("575a2acfbc9fb3f12145a004"),"name" : "joe","age" : 30.0,"sex" : "female","location" : "Wisconsin"
}

step3:加入要插入一条喜欢的书籍:

db.users.update({name:"joe"},{"$set":{"favorite book":"War and Peace"}})

然后查询db.users.find()

/* 1 */
{"_id" : ObjectId("575a2acfbc9fb3f12145a004"),"name" : "joe","age" : 30.0,"sex" : "female","location" : "Wisconsin","favorite book" : "War and Peace"
}

从结果总可以看出,数据中添加了一条favorite book字段,达到了我们想要的结果^_^;

step4:如果joe喜欢另一本书,继续来看"$set"如何大发神威;

/* 1 */
{"_id" : ObjectId("575a2acfbc9fb3f12145a004"),"name" : "joe","age" : 30.0,"sex" : "female","location" : "Wisconsin","favorite book" : "forrest gump"
}

"$Set"还可以修改键的类型,比如喜欢的是好多书,就可以放在数组中。

如下:

 db.users.update({name:"joe"},{"$set":{"favorite book":["cat's Cradle","Foundation Trilogy","Ender's Game"]}})

/* 1 */
{"_id" : ObjectId("575a2acfbc9fb3f12145a004"),"name" : "joe","age" : 30.0,"sex" : "female","location" : "Wisconsin","favorite book" : [ "cat's Cradle", "Foundation Trilogy", "Ender's Game"]
}

还可以通过"$unset"来操作删除某个字段

db.users.update({name:"joe"},{"$unset":{"favorite book":1}})

/* 1 */
{"_id" : ObjectId("575a2acfbc9fb3f12145a004"),"name" : "joe","age" : 30.0,"sex" : "female","location" : "Wisconsin"
}

这样就和最开始一样了。

"$set"还可以修改内嵌的文档

如:

var log={title:"A Blog Post",content:"...",author:{name:"joe",email:"joe@qq.com"}}
log
db.blog.posts.insert(log)
db.blog.posts.findOne()

/* 1 */
{"_id" : ObjectId("575a313fbc9fb3f12145a008"),"title" : "A Blog Post","content" : "...","author" : {"name" : "joe","email" : "joe@qq.com"}
}

db.blog.posts.update({"author.name":"joe"},{"$set":{"author.name":"joe Mather"}})

/* 1 */
{"_id" : ObjectId("575a313fbc9fb3f12145a008"),"title" : "A Blog Post","content" : "...","author" : {"name" : "joe Mather","email" : "joe@qq.com"}
}

总结:$开头的修改器都是通过主键key来修改对应的内容。

转载于:https://www.cnblogs.com/lwy19998273333/p/5573430.html

相关文章:

4GL之Non-SCROLLING CURSOR

在4gl中CURSOR可以说是每一个程序中都会有的,而CURSOR又分为三种SCROLLING CURSOR、Non-SCROLLING CURSOR、LOCKING CURSOR。 Non-SCROLLING CURSOR的聲明有兩種,一種是先定義好sql語句到一個變量里: DECLARE cursor名 CURSOR FROM 變量…

项目总结三--波纹视图

波纹视图的使用 代码在github:https://github.com/wyon0313/YGMoireAnimation

vlookup示例_VLOOKUP示例–如何在Excel中执行VLOOKUP

vlookup示例Microsoft Excel includes a variety of different functions that help users with calculations of any kind. The functionality of Excel is so comprehensive that average users dont even take advantage of most utilities.Microsoft Excel包括各种不同的功…

MySQL--从库启动复制报错1236

链接:http://blog.csdn.net/yumushui/article/details/42742461 今天在搭建一个MySQL master-slave集群时,执行了change master命令,然后又 start slave 启动slave服务,结果查看salve状态就出现错误了: mysql> show slave stat…

使用Script元素发送JSONP请求

// 根据指定URL发送一个JSONP请求 //然后把解析得到的相应数据传递给回调函数 //在URL中添加一个名为jsonp的查询参数,用于指定该请求的回调函数的名称 function getJSONP(url, callback){//为本次请求创建一个唯一的回调函数名称var cbnum "cb"getJSONP.counter;va…

iOS 崩溃记录

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/AEECAAFB-F14A-43AA-9FB8-8388CAC40122/DouLiao.app/DouLiao Reason: image not found 原因应该是iOS系统版本太…

以太坊Geth几种同步模式

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 以太坊Geth几种同步模式 同步模式分类 –fast Enable fast syncing through state downloads –light Enable light client mode –s…

[转]Membership 到 .NET4.5 之 ASP.NET Identity

本文转自:http://www.cnblogs.com/jesse2013/p/membership-part3.html 我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然后深入学习了Membership的架构设计。正所谓从实践从来,到实践从去,在我们把Membership的…

js填充select下拉框并选择默认值

/* 使用json数组填充下拉框并复选 *//* 初始化下拉框数据 */ var jsonStr { "data": [] }; for (var str in JsonStr.data) {jsonStr.data.push({ "value": JsonStr.data[str].value, "text": JsonStr.data[str].text }); }/* 调用BandSelectOb…

关于curl使用记录

因经常需要排除线上用户问题,查看用户数据请求结果,使用到curl命令,但是总是忘记,在此做下记录。 curl post请求命令行如下: curl -d "param0value0&param1value1" "url"

智能合约部署及调用

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 智能合约部署及调用 以太坊区块链技术2.0版本对于行业应用的开发最主要特性就是实现了智能合约,本质上讲智能合约是由事件驱…

POP到指定的界面

int index (int)[[self.navigationController viewControllers]indexOfObject:self]; [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:(index -2)] animated:YES];

js markdown chart flow

http://knsv.github.io/mermaid/#example-of-a-marked-renderer转载于:https://www.cnblogs.com/studyNT/p/5584399.html

使用Remix编译和部署以太坊智能合约

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络…

Java之Array(数组)说明

代码说明: 1 package array;2 3 import java.util.ArrayList;4 import java.util.Arrays;5 import java.util.List;6 7 /**8 * Array使用说明:9 * 内容: 10 * 1、Array实例化; 11 * 2、Array与ArrayList转换; 12 …

创建操作/删除多行数据的UITableView的细节

首先注意需要重写-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 这里需要注意的是返回的结果应该是 return UITableViewCel…

每天进步一点点——Linux

http://blog.csdn.net/cywosp/article/category/443566/1转载于:https://www.cnblogs.com/zengkefu/p/5586780.html

用Go 构建一个区块链 -- Part 5: 地址

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 比特币地址 这就是一个真实的比特币地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。这是史上第一个比特币地址,据说属于…

iOS 9 适配系列教程

转自:http://www.cocoachina.com/ios/20150703/12392.html 本文是投稿文章,作者:ChenYilong(https://github.com/ChenYilong/iOS9AdaptationTips) Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为ht…

AutoMocker单元测试

/// <summary>/// 测试获取所有物流/// </summary>[TestMethod]public void TestExpressController(){var Expresss new List<Express> { new Express{Code"01",Name"测试物流"}}.AsQueryable();var mocker new AutoMocker();mocker.U…

CSS.text不被选中

1、 text{-moz-user-select: none; /*火狐*/-webkit-user-select: none; /*webkit浏览器*/-ms-user-select: none; /*IE10*/-khtml-user-select: none; /*早期浏览器*/-o-user-select: none; /* Opera*/user-select: none;} 2、user-select - CSS3参考手册.html&#xff08;htt…

一个Solidity源文件的布局

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 源文件可以包含任意数量的合约定义&#xff0c;include指令和pragma伪指令。 Pragma 版本 源文件可以&#xff08;并且应该&#xff09;使…

iOS 数字滚动 类似于老 - 虎- 机的效果

效果图 具体实现代码如下 ZCWScrollNumView.h文件 #import <UIKit/UIKit.h>typedef enum {ZCWScrollNumAnimationTypeNone,ZCWScrollNumAnimationTypeNormal,ZCWScrollNumAnimationTypeFromLast,ZCWScrollNumAnimationTypeRand,ZCWScrollNumAnimationTypeFast } ZCWScro…

序列化模块--json模块--pickle模块-shelve模块

什么叫序列化&#xff1f; 序列化是指把内存里的数据类型转变成字符串&#xff0c;以使其能存储到硬盘或通过网络传播到远程&#xff0c;因为硬盘或网络传输时只能接受bytes 例&#xff1a; 把内存数据 转成字符 # data {# roles:[# {role:monster,type:pip,life:5…

UITextView添加占位字符

#import "YGTextView.h"#define kPlaceholderDefaultTopMargin 4 // Placeholder上下间距#define kPlaceholderDefaultLeftMargin 5 // Placeholder左右间距implementation YGTextView#pragma mark - 初始化PlaceholderTextView- (instancetype)initWithFrame…

手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 学习目标 了解智能合约 简单环境搭建 能够利用solidity编写Hello World合约 合约部署 和合约互动 使用solidity语言撰写智能合约 …

洛谷P3159 [CQOI2012]交换棋子

巧妙的拆点方式&#xff0c;首先把1看成黑点&#xff0c;0看成空的&#xff0c;几次交换就可以看成一条路径 1&#xff09;从容量上看&#xff0c;这条路径为1-2-2-2-2-2-……-2-1 2&#xff09;从费用上看&#xff0c;这条路径每条边费用都是1 于是用一种巧妙的拆点方式&#…

趣谈iOS运行时的方法调用原理

一个成熟的计算机语言必然有丰富的体系&#xff0c;复杂的容错机制&#xff0c;处理逻辑以及判断逻辑。但这些复杂的逻辑都是围绕一个主线丰富和展开的&#xff0c;所以在学习计算机语言的时候&#xff0c;先掌握核心&#xff0c;然后了解其原理&#xff0c;明白程序语言设计的…

GCD实现倒计时

__block int timeout59; //倒计时时间dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_source_t _timer dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);dispatch_source_set_timer(_timer,dispatch_wall…

Solidity基础入门知识(十)函数的访问权限和可见性

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 下面来继续介绍作为一个分布式网络语言所特有的internal和external这两种不同的函数调用方式&#xff0c;以及Solidity提供的对函数调用时的…