2.MongoDB系列之创建更新删除文档
1. 插入文档
// 单条插入
db.getCollection('blog').insertOne({'type': 'mongodb'})
// 批量 插入
db.getCollection('blog').insertMany([{'type': 'elasticsearch'}, {'type': 'clickhouse'}])
db.getCollection('blog').insertMany([{'type': 'elasticsearch'}, {'type': 'clickhouse'}])
2. 删除文档
// 查询插入的文档
db.getCollection('blog').find({})
结果为:
| _id | type |
|---|---|
| 62b6659b24530000f8005953 | elasticsearch |
| 62b6659b24530000f8005954 | clickhouse |
| 62b66751e94c000047004d72 | elasticsearch |
| 62b66751e94c000047004d73 | clickhouse |
| 62b6675ce94c000047004d74 | elasticsearch |
| 62b6675ce94c000047004d75 | clickhouse |
| 62b6675ce94c000047004d76 | mongodb |
// 删除一条记录
db.getCollection('blog').deleteOne({'_id': ObjectId('62b6659b24530000f8005953')})
// 删除多条记录
db.getCollection('blog').deleteMany({'type': 'clickhouse'})
3. 删除集合
# 删除集合中所有文档
db.getCollection('blog').deleteMany({})
# 直接删除集合
db.getCollection('blog').drop()
4. 更新文档
// 先插入文档
db.getCollection('users').insertMany([{'name': 'shenjian', 'age': 26}, {'name': 'shenjian', 'age': 28}, {'name': 'shenjian', 'age': 29}])
// 替换文档会替换文档整体结构
db.getCollection('users').replaceOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {'name': 'shenjian', 'age': 18})
// $set更新age email字段,其他字段不变
db.getCollection('users').update({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$set: {'age': 26, 'email': []}})
// $set批量更新age字段,设置multi: true即可,默认更新单条
db.getCollection('users').update({'name': 'shenjian'}, {$set: {'age': 26}}, {multi: true})
// $inc自增自减,age加1
db.getCollection('users').update({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$inc: {'age': 1}})
// 数组运算符$push添加元素
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$push: {'comments': {'name': 'liutao', 'content': 'great'}}})
// 在$push时一次添加多个元素采用$each
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$push: {'comments': {$each: [{'name': 'liuyan', 'content': 'great'}, {'name': 'liuyifei', 'content':'good'}]}}})
// 修改数组指定下标的好感度
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$inc: {'comments.0.like': 100}})
// 修改数组指定用户的好感度,$为定位运算符,查询文档匹配的数据元素并更新
db.getCollection('users').updateOne({'comments.name': 'liuyifei'}, {$inc: {'comments.$.like': 100}})
// 使用数组过滤器进行更新
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$set: {'comments.$[elem].status': 0}}, {arrayFilters: [{'elem.like': 100}]})
// 采用$addToSet避免数组中重复插入,执行多次该语句,邮箱也保持唯一
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$addToSet: {'email': '1515345281@qq.com'}})
// 删除数组中指定内容
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$pull: {'comments': {'name': 'liuyifei', 'content':'good'}}})
// 从数组队尾删除,若为-1则从队头删除
db.getCollection('users').updateOne({'_id': ObjectId('62b66a1ae94c000047004d83')}, {$pop: {'comments': 1}})
// $upset不存在则插入,存在则更新
db.getCollection('users').update({'name': 'shenjian'}, {$set: {'age': 27}}, {upsert: true})
// 在创建文档是设置字段值,后续不允许修改
db.getCollection('users').update({'name': 'china'}, {$setOnInsert: {'c_date': new Date()}}, {upsert: true})
// 查询并返回结果findOneAndUpdate
db.getCollection('users').findOneAndUpdate({'name': 'china'}, {$set: {'m_date': new Date()}})
// 查询并返回新结果findOneAndUpdate
db.getCollection('users').findOneAndUpdate({'name': 'china'}, {$set: {'m_date': new Date()}}, {returnNewDocument: 1})
2.MongoDB系列之创建更新删除文档的更多相关文章
- 《mongoDB》基本操作-创建/更新/删除文档
一:基本操作 - db; 当前选择的集合(等于数据库名) > db demo - use db_name; 选择你要操作的集合 > use demo switched to db dem ...
- MongoDB(二)创建更新删除文档
插入并保存文档操作 用insert向目标集合插入文档,如果没有_id键则会自动添加.最后自动保存. >db.foo.insert({"bar":"baz" ...
- MongoDB创建\更新\删除文档操作
一.插入\创建文档 --当插入一个不存在的文档时,会自己主动创建一个文档 [root@racdb ~]# mongo MongoDB shell version: 2.4.14 connecti ...
- sharepoint中的Power Shell命令创建、删除文档库列表
ListTemplateType 枚举: 自定义列表-GenericList.文档库-DocumentLibrary.图片库-PictureLibrary.公告-Announcements.联系人-C ...
- MongoDB(五):更新文档、删除文档
1. 更新文档 MongoDB的uptade()和save()方法用于将集合中的文档更新.update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档.从3.2版本开始,Mon ...
- MongoDB学习笔记二:创建、更新及删除文档
插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...
- MongoDB学习笔记-创建、更新、删除文档
创建 MongoDB中使用insert方法来向集合插入文档,然后保存到MongoDB中. db.foo.insert({"hehe":"呵呵"} ...
- Mongodb 笔记02 创建、更新和删除文档
创建.更新和删除文档 1. 插入并保存: 1). 单条插入,insert : db.foo.insert({"bar":"baz"}) 2). ...
- 创建、更新、删除文档。 --- Mongodb权威指南阅读。
插入文档: db.foo.insert({ "key" : "value"}); 使用insert插入一个数据,文档中如果没有_id 会自动给文档增加_id. ...
随机推荐
- kubernetes之DaemonSet以及滚动更新
1.什么是DaemonSet? 1.1DaemonSet是Pod控制器的又一种实现方式,用于在集群中的全部节点上同时运行一份指定的Pod资源副本,后续加入集群的节点也会自动创建一个相关的Pod对象,当 ...
- Vue 内置指令 && 自定义指令
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...
- linux常见命令(十)
cut/grep/sort/uniq/wc 连续执行多个命令--;进入/data新建data01目录,在data01目录新建test.txtcd /data;mkdir data01;cd data0 ...
- Python逆向爬虫之scrapy框架,非常详细
爬虫系列目录 目录 Python逆向爬虫之scrapy框架,非常详细 一.爬虫入门 1.1 定义需求 1.2 需求分析 1.2.1 下载某个页面上所有的图片 1.2.2 分页 1.2.3 进行下载图片 ...
- MySQL事务概念与流程和索引控制
MySQL事务概念与流程和索引控制 视图 1.什么是视图 我们在执行SQL语句其实就是对表进行操作,所得到的其实也是一张表,而我们需要经常对这些表进行操作,拼接什么的都会产生一张虚拟表,我们可以基于该 ...
- NOI 2019 省选模拟赛 T1【JZOJ6082】 染色问题(color) (多项式,数论优化)
题面 一根长为 n 的无色纸条,每个位置依次编号为 1,2,3,-,n ,m 次操作,第 i 次操作把纸条的一段区间 [l,r] (l <= r , l,r ∈ {1,2,3,-,n})涂成颜色 ...
- 获取Windows正在运行的窗口进程
主要是获取Alt+Tab中展示的窗口 原理主要是获取窗口的样式来判断是否会在Alt+Tab中显示 具体代码如下 /// <summary> /// Alt+Tab 应用 /// </ ...
- 「题解报告」P7301 【[USACO21JAN] Spaced Out S】
原题传送门 神奇的5分算法:直接输出样例. 20分算法 直接把每个点是否有牛的状态DFS一遍同时判断是否合法,时间复杂度约为\(O(2^{n^2})\)(因为有判断合法的剪枝所以会比这个低).而在前四 ...
- Spring 16: SM(Spring + MyBatis) 注解式事务 与 声明式事务
Spring事务处理方式 方式1:注解式事务 使用@Transactional注解完成事务控制,此注解可添加到类上,则对类中所有方法执行事务的设定,注解添加到方法上,则对该方法执行事务处理 @Tran ...
- [SDR] GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图
目录 1.前言 2.启动 GNU Radio 3.新增块 4.运行 本文视频 参考链接 1.前言 本文将介绍如何在 GNU Radio 中创建和运行第一个流程图. 2.启动 GNU Radio GNU ...