mongoDB数组操作器
 
$push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组。
增加评论comments:
db.blog.posts.update({"title":"a blog post"}
 ,{
 $push:
 {"comments":{"name":"joe","email":"joe@example.com"}}
 }
)
最终的结果是:
{
 "_id":ObjectId("8df8df78d7f7d8df7"),
 "title":"a blog post"
 "comments":[{
  "name":"joe",
  "email":"joe@example.com"
 }]
}
 
$ne如果一个值不在数组里面,就加进去:
db.papers.update({"authors cited":{"$ne":"richie"}},
 {$push:{"authors cited":"richie"}})
也可以用$addToSet完成同样的功能:
db.papers.update({"_id":ObjectId("sdf9sd7f67df89d")},
 {"$addToSet":{"authors cited":"richie"}})
 
$addToSet和$each组合起来,可以添加多个不同的值:
db.papers.update({"_id":ObjectId("sdf9sd7f67df89d")},
 {"$addToSet":{"authors cited":{"$each":["richie","dff","dsf"]}}})
 
$pop删除数组中的元素:
删除末尾的元素:{$pop:{key:1}}
删除头部的元素:{$pop:{key:-1}}
 
$pull基于特定条件删除元素:
db.lists.insert({"todo":["dishes","laundry","dry cleaning"]})
db.lists.update({},{"$pull":{"todo":"laundry"}})
 
修改数组元素的数量:
{
 "_id":ObjectId("df89d8fd7d"),
 "content":"...",
 "comments":[
  {
   "comment":"good post",
   "author":"joy",
   "votes":0
  },
  {
   "comment":"good post",
   "author":"joyn",
   "votes":0
  },
  {
   "comment":"good post",
   "author":"andy",
   "votes":0
  }
 ]
}
如果想增加第一个评论的投票数量:
db.blog.update("post":post_id},{"$inc":{"comments.0.votes"}:1})
 
修改用户名:($用于定位已匹配的的元素,如果多个,就匹配第一个)
db.blog.update({comments.author:"andy"}:{"$set":{"comments.$.author":"jim"}})

mongoDB的shell数组操作器的更多相关文章

  1. Mongodb DB shell数据操作

    shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help(); db.yo ...

  2. shell数组操作

    1.数组定义,shell使用一对括号表示数组,数组元素间用"空格"分隔 # 空数组arr1 arr1=() # 数组arr2,成员分别是1, 2, 3, 4, 5, 6 arr2= ...

  3. shell 数组操作

    1. 定义数组: var_array=(one two three four five) 2.常用操作 获取数组长度: ${#var_array[@]} 获取所有数组元素:  ${var_array[ ...

  4. MongoDB之$关键字及$修改器$set $inc $push $pull $pop

    一.查询中常见的  等于   大于  小于  大于等于  小于等于 等于:用':' 大于:用'$gt' 小于:用'$lt' 大于等于:用'$gte' 小于等于:用'$lte' MongoDB的操作就是 ...

  5. MongoDB数组修改器更新数据(转)

    MongoDB数组修改器更新数据    这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用 ...

  6. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  7. 第三章 JQuery: HelloWorld--常见方法--css--选择器--筛选器--属性--效果--事件--数组操作--字符串操作--对象转换

    1.jQuery简介 为了简化JavaScript 的开发, 一些JavsScript 库诞生了. JavaScript库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的页面, 并且兼 ...

  8. Shell系列(38)- 数组操作→取值、遍历、替换、删除

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  9. MongoDB学习笔记(数据操作)

    1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...

随机推荐

  1. 程序挂在dynamic_cast<CCObject*>(pDelegate)->retain();

    CCTargetedTouchDelegate 的继承 和 dynamic_cast 想写个可以响应touch的sprite 类定义成了这个样子: class GemBoard : public CC ...

  2. electron的通信

    1.获取当前设备的屏幕可用区域的分辨率winW=electron.screen.getPrimaryDisplay().workAreaSize.widthwinH=electron.screen.g ...

  3. Kibana查询说明

    elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 Kibana接口概述 Kibana接口分为四个主要部分: 发现 可视化 仪表板 设置 我们将按照列出的顺序浏览每个部分的 ...

  4. StructureMap

    In one of my projects (.NET based - using the Web API), I am using StructureMap as a dependency inje ...

  5. C# 延时函数 非Sleep

    1.示例: using System.Runtime.InteropServices; [DllImport("kernel32.dll")] static extern uint ...

  6. form的method用get导致中文乱码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. Jar包版本查看方法

    原文:  https://blog.csdn.net/u011287511/article/details/66973559 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目 ...

  8. DelegatingFilterProxy(委派过滤器代理类)使用

    本文转自:http://blog.csdn.net/flyingfalcon/article/details/8543898 DelegatingFilterProxy就是一个对于servlet fi ...

  9. 【WPF】一组CheckBox的全选/全不选功能

    需求:给一组CheckBox做一个全选/全不选的按钮. 思路:CheckBox不像RadioButton那样拥有GroupName属性来分组,于是我想的方法是将这组CheckBox放到一个布局容器中, ...

  10. uboot在nandflash存储时内存和NandFlash存储空间

    硬件采用nandflash,nandflash为8位数据宽度,没有dataflash和norflash. Nandflash空间分配为 bootstrap + u-boot + env + linux ...