MongoDB基本操作(包括插入、修改、子节点排序等)
一、基本操作
1.新增文章
db.article.insert({title:"今天天气很好",content:"我们一起去春游",_id:1})
2.新增一条评论
db.article.update({_id:1},{"$set":{comments:[{user:"duanjt",time:new Date("2019-01-30")}]}})
说明:$set表示替换comments节点的内容
3.再增加四条评论
db.article.update({_id:1},{"$addToSet":{comments:{"$each":[{user:"zhuzhu",time:new Date("2019-01-31")}]}}});
db.article.update({_id:1},{"$addToSet":{comments:{"$each":
[
{user:"lisi",time:new Date("2019-01-20")},
{user:"wangwu",time:new Date("2019-01-11")},
{user:"taoge",time:new Date("2019-01-12")}
]
}}});
db.article.update({_id:1},{"$push":{comments:{"$each":[{user:"chaoling",time:new Date("2019-01-31")}]}}});
说明:$addToSet表示在节点comments中增加内容。而$each表示将后面指定的数组一个一个插入到comments节点里面。
在这里addToSet和push感觉作用是一样的。
4.查询前2条评论
db.article.find({_id:1},{"comments":{"$slice":[0,2]}});
5.将评论里面用户是“wangwu”的修改为“王五”
db.article.update(
{"_id":1,"comments.user":"wangwu"},
{"$set":{"comments.$.user":"王五"}}
)
注意:comments.$.user中的$是一个占位,表示当前匹配的数据行
6.将comments里面的内容按时间或名称排序
db.article.update({_id:1},{"$push":{comments:{"$each":[],"$sort":{"time":1}}}});
db.article.update({_id:1},{"$push":{comments:{"$each":[],"$sort":{"user":1}}}});
说明:由于MongoDB不提供针对子节点的直接排序方法,所以我们只能通过变通的方式,插入一个空数组,然后再排序。排序完了之后再通过第四步的方法获取数据。
二、关于push和addToSet的区别
db.user.insert({_id:1,name:"段江涛",likes:["学习","劳动"]}); //插入数据,爱好是学习和劳动
db.user.update({_id:1},{"$push":{"likes":{"$each":["学习"]}}}); //通过push增加一个“学习”的爱好,能新增成功
db.user.update({_id:1},{"$addToSet":{"likes":{"$each":["学习"]}}}); //通过addToSet增加一个“学习”的爱好,操作不报错,但是不会新增成功。
结论:push直接插入,而addToSet会自动排除重复的数据。此外push支持$sort $position $slice,可以控制插入元素的位置、排序和限制元素数量
MongoDB基本操作(包括插入、修改、子节点排序等)的更多相关文章
- elementui树表修改子节点不能实时更新的解决办法
在使用ElementUI提供的树表(el-table)的时候发现,如果手动通过JS修改了某个节点的children中的一条记录(子节点)的话,并不会自动刷新. 简单分析了一下,原因大概是因为VUE的数 ...
- 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题
前几天同事做了一个效果,希望在原本使用了遮罩组件 Mask 的技能图标(让技能图标变成圆形)上在添加一个置灰的功能,但问题来了:因为是动态根据游戏中玩家的条件才动态置灰,以修改 Mask 下子节点 I ...
- js获取子节点和修改input的文本框内容
js获取子节点和修改input的文本框内容 js获取子节点: $("#"+defaultPVItemId).children().eq(3); //获取某个选择器下的第四个子节点 ...
- contents() 查找匹配元素内部所有的子节点(包括文本节点)。如果元素是一个iframe,则查找文档内容
contents() V1.2概述 查找匹配元素内部所有的子节点(包括文本节点).如果元素是一个iframe,则查找文档内容 示例 描述:大理石平台检定规程 查找所有文本节点并加粗 HTML 代码 ...
- DOM操作插入新的子节点
appendChid.insertBefore首先这两个方法都是添加子节点. append(追加),appendChid:给父节点的子节点末尾添加子节点. insertBefore(newNode, ...
- 红黑树之 原理和算法详细介绍(阿里面试-treemap使用了红黑树) 红黑树的时间复杂度是O(lgn) 高度<=2log(n+1)1、X节点左旋-将X右边的子节点变成 父节点 2、X节点右旋-将X左边的子节点变成父节点
红黑树插入删除 具体参考:红黑树原理以及插入.删除算法 附图例说明 (阿里的高德一直追着问) 或者插入的情况参考:红黑树原理以及插入.删除算法 附图例说明 红黑树与AVL树 红黑树 的时间复杂度 ...
- MongoDB【第三篇】MongoDB基本操作
MongoDB的基本操作包括文档的创建.删除.和更新 文档插入 1.插入 #查看当前都有哪些数据库 > show dbs; local 0.000GB tim 0.000GB #使用 tim数据 ...
- MongoDB 基本操作和聚合操作
一 . MongoDB 基本操作 基本操作可以简单分为查询.插入.更新.删除. 1 文档查询 作用 MySQL SQL MongoDB 所有记录 SELECT * FROM users; db ...
- 【MongoDB详细使用教程】二、MongoDB基本操作
目录 数据类型 数据库操作 集合操作 数据操作 增 查 改 修改整行 修改指定字段的值 删 数据类型 MongoDB常见类型 说明 Object ID 文档ID String 字符串,最常用,必须是有 ...
随机推荐
- 如何将AAC音频转换成MP3格式
我们应该怎样将AAC音频转换成MP3格式呢?AAC是一种专为声音数据设计的文件压缩格式,相对于MP3音频来说更加高效,性价比跟高.但是因为MP3音频格式的通用性,我们还是时常需要将AAC音频转换成MP ...
- 浅谈Vue 项目性能优化 经验
我优化公司的项目总结的几点: 1.先查看引入的图片大小,如果太大了,可以压缩,压缩路径:https://zhitu.isux.us/ 2.代码包优化, 待下项目开发完成.进行打包源码上线环节,需要对项 ...
- linux_vim_emmet插件的安装配置
首先要去如下网址下载一个安装包(英文基础好的同学可以去github上搜他的开源,写的更加详细) https://www.vim.org/scripts/script.php?script_id=298 ...
- ffmpeg的编译和安装
1. 先到ffmpeg官网上下载ffmpeg源码,然后配置.编译 http://ffmpeg.org/download.html 可以如下进行配置: ./configure --prefix=/usr ...
- ORACLE——NVL()、NVL2() 函数的用法
NVL和NVL2两个函数虽然不经常用,但是偶尔也会用到,所以了解一下. 语法: --如果表达式1为空则显示表达式2的值,如果表达式1不为空,则显示表达式1的值 NVL(表达式1,表达式2); --如果 ...
- JedisCluster简单使用
项目中因为一些原因需要用到缓存,之前没有接触过,在此做一些简单的使用记录. 1.jedis在项目中依赖 <dependency> <groupId>redis.clients& ...
- vue搭建脚手架
1.检查npm -v有版本提示成功即可2.npm install vue-cli -g //全局安装3.vue -V 查看版本号(我这边安装的是2.9.6,V大写)4.vue init webpack ...
- 关于 div 的 contenteditable 使用,placeholder 和 复制图片显示并上传,按住 enter+ctrl 内容换行
当使用文本编辑的时候,首先会使用 textarea ,但是,这个里面不能加入其它标签,也就是不能富文本化. 于是可以使用 contenteditable 就是给 div 加上该属性.就变得丰富起来.使 ...
- automapper demo
最近做项目,需要把DataTable中的数据强类型化.于是试用了下比较常用的AutoMapper,通过看代码中附带的Demo与网上的教程,也算能够勉强使用了,现将学习笔记记录如下: namespace ...
- python工具的选择
自己喜欢用pycharm,下载地址:https://www.jetbrains.com/products.html#lang=python 补丁地址:http://idea.lanyus.com/