MongoDB 数组操作
$push:向文档数组中添加元素,如果没有该数组,则自动添加数组。
db.users.insert({"name":"zhang"})
db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@pocketdigi.com"}})
db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@fwvga.com"}})
以上代码,先创建name为zhang的用户,再给该用户加入邮箱,放到emails数组中.
$addToSet:功能与$push相同,区别在于,$addToSet把数组看作成一个Set,如果数组中存在相同的元素,不会插入。
db.users.update({"name":"zhang"},{"$addToSet":{"emails":"zhang@fwvga.com"}})
db.users.find()
{
"_id" : ObjectId("5a7183066b593101d819b479"),
"name" : "zhang",
"emails" : [
"zhang@pocketdigi.com",
"zhang@fwvga.com"
]
}
可以看到,并没有两个zhang@fwvga.com的邮箱.
$addToSet还可以与$each组合使用,一次添加多个值。
db.users.update({"name":"zhang"},{"$addToSet":{"emails":{"$each":["zhang@fwvga.com","zhang@163.com","zhang@qq.com"]}}})
$pop,与$push相对应,删除数组里的元素
db.users.update({"name":"zhang"},{"$pop":{"emails":{'key':1}}});
key=1,从尾删除,key=-1,从头删除
$pull 删除指定元素,结合上面的例子,就是删除指定的邮箱
db.users.update({"name":"zhang"},{"$pull":{"emails":"zhang@163.com"}});
修改指定位置的元素:
数组每个元素都有索引,从0开始。经过上面的一系列操作,zhang的文档应该是这样的:
{
"_id" : ObjectId("5a7183066b593101d819b479"),
"name" : "zhang",
"emails" : [
"zhang@pocketdigi.com",
"zhang@fwvga.com"
]
}
假如要把第一个邮箱修改成zhang@163.com:
db.users.update({"name":"zhang"},{"$set":{"emails.0":"zhang@163.com"}});
假如要把zhang@fwvga.com替换成zhang@qq.com,在并不知道zhang@fwvga.com索引时:
db.users.update({"name":"zhang","emails":"zhang@fwvga.com"},{"$set":{"emails.$":"zhang@qq.com"}});
MongoDB 数组操作的更多相关文章
- mongodb数组操作
1.查询课程中包含math,chinese的课程 db.getCollection('student').find( { course:{$all:['math','chinese']} } ).pr ...
- mongoDB的shell数组操作器
http://www.2cto.com/database/201304/205024.html mongoDB数组操作器 $push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组. 增 ...
- [MongoDB]对数组操作
摘要 在实际开发中遇到更新某个document中的数组的值,这里做一下记录. 这里使用的驱动为 using MongoDB.Bson;using MongoDB.Driver; 相关文章 [Mongo ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...
- MongoDB数组修改器更新数据(转)
MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用 ...
- MongoDB相关操作
1. 连接MongoDB <?php //1.连接到MongoDB $host = "127.0.0.1"; $port = 27017; $server = " ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
随机推荐
- idea创建文件类型失败(xml之类的失效
https://blog.csdn.net/sutongxuevip/article/details/72832754
- (三)、Fiddler的使用
Fiddler的基本使用 1.先来看看Fiddler的基本界面 会话列表中各项的意思: Result: 表示HTTP返回的状态码 Protocal: 请求的协议,如:HTTP.HTTPS Host: ...
- 在ng中的select的使用方法的讲解
项目中我们可能会使用到条件过滤选择框之类的东西,最简单的就是input.select. 关于select的使用我们通常会需要从数据库中返回数据进行动态绑定. 此时我们会有两种方式: 1)使用ng-re ...
- bzoj 3867: Nice boat
题意:给定一个正整数序列,操作是1.区间赋值,2.区间大于x的数与x取gcd,最后输出操作后的序列 用平衡树维护相同数组成的连续段,每次操作至多增加两个连续段,操作2记录一下区间最小值然后暴力修改,每 ...
- Python项目打包成exe文件
这里我们使用pyinstaller这个软件即可,使用pip即可完美安装,在要打包的程序目录下打开cmd输入 pyinstaller -F 文件名.py 即可成功,运行成功后生成一个dict文件夹,东西 ...
- css移除a标签及map、area(图片热区映射)点击过后的边框
默认a标签及其包含的html元素和map中的area(图片热区映射)在点击过后留有默认的蓝色边框,如下图 可以看到,蓝色的边框破坏了页面的整体美感,很多时候我们都是不需要的.通过设置相应的css可以去 ...
- Code blocks调试教程
特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html 一.题外话 之前一直想用Code bl ...
- 安装NFS服务,并挂载到开发板
1.前言 由于嵌入式linux开发大多数使用的是交叉编译环境,难免很频繁的将文件在开发板和PC环境之间传递,最方便的当然是网络传递了,可以使用FTP,以及挂载NFS两种方式了,显然后者更为方便了. 2 ...
- 生成短的uuid
package test1; import java.util.Random; import java.util.UUID; public class ShareCodeUtil { private ...
- java之IO整理(下)
一:对象的序列化 对象序列化就是把一个对象变为二进制数据流的一种方法. 一个类要想被序列化,就行必须实现java.io.Serializable接口.虽然这个接口中没有任何方法,就如同之前的clone ...