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. ...
随机推荐
- BZOJ3732 (Kruskal重构树)
Kruskal重构树上\(x\)和\(v\)的\(lca\)的权值即为它们最长路最小值 #include <cstdio> #include <iostream> #inclu ...
- POJ2201 Cartesian Tree (cartesian tree)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Excel 查找函数(三):HLOOKUP
函数讲解 [语法]HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup]) [参数] lookup_value:查找值(必须是 ...
- 随机视频API
首先打开服务器创建一个html文件也可以不创建 代码如下 点击查看代码 <!DOCTYPE html> <html lang="zh-CN"> <he ...
- C# Hashtable VS. Dictionary 性能对比
Hashtable VS Dictionary 因为Hashtable的Key和Value都是object类型,所以在使用值类型的时候,必然会出现装箱和拆箱的操作,因此性能肯定是不如Dictionar ...
- Swift中的Result 类型的简单介绍
Swift 5引入了一个新的Result类型, 它使用枚举来处理异步函数的结果. 苹果文档对该类型的描述: A value that represents either a success or a ...
- openstack中Glance组件简解
一.Glance组件介绍 1.概念 Glance是OpenStack镜像服务,用来注册.登陆和检索虚拟机镜像.Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像. ...
- PostgreSQL 大对象导出报错问题分析
1.前言 在处理用户问题过程遇到一个问题.用户通过pg_dump导出 bytea 对象时,当行的大小超过 1G时,会报错: [v8r6c5b41@dbhost01 ~]$ sys_dump -t t1 ...
- KingbaseES触发器介绍
触发器及其作用 触发器(trigger)是用户定义的由事件驱动的特殊过程.一旦定义,所有用户的对应操作均会由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制. 触发器类似于约束,但是比 ...
- 手写tomcat——编写一个提供servlet能力的 http服务器
点击查看代码 package com.grady.diytomcat; import com.grady.diytomcat.handler.RequestHandler; import org.do ...