首页 > 数据库 >2.MongoDB系列之创建更新删除文档

2.MongoDB系列之创建更新删除文档

时间:2022-10-16 13:45:54浏览次数:80  
标签:users 删除 MongoDB db getCollection 文档 ObjectId id name

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': '[email protected]'}})
// 删除数组中指定内容
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})

欢迎关注公众号算法小生沈健的技术博客

标签:users,删除,MongoDB,db,getCollection,文档,ObjectId,id,name
From: https://www.cnblogs.com/shenjian-online/p/16796089.html

相关文章

  • 4.MongoDB系列之索引(一)
    1.执行计划查看db.getCollection('users').find({'username':'shenjian'}).explain('executionStats')结果查看,先大致看一遍,后续慢慢来深入理解{"queryPlanner"......
  • 3.MongoDB系列之查询
    1.find简介//查询所有文档db.users.find({})//查询指定条件文档db.users.find({'name':'shenjian'})//查询指定字段,1查询键0剔除键db.users.find({'name':'sh......
  • 5.MongoDB系列之索引(二)
    1.$运算符如何使用索引1.1低效的运算符$ne、$not查询可以使用索引,但不是很有效,尽量避免1.2范围查询范围查询其实是多值查询,根据复核索引规则,尽可能先等值精确匹配,然......
  • mongodb基础整理篇————副本概念篇[外篇]
    前言副本集整理。开始逐步把mongodb博客补齐了。正文什么是副本集副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点......
  • MongoDB笔记
    MongoDB笔记非关系型数据库中的文档数据库本质就是存各种各样的JSON(数据库(集合(文档)))(数据库(集合(文档)))安装使用步骤:--下载安装--将bin文件目录添加到path路径--在C盘根......
  • 文档基本操作
    ES在6.0之后Type已修改成唯一的_doc,下边对文档Type的操作都是指定的_doc在指定索引下创建文档index-如果ID不存在,创建新的文档。如果ID存在,先删除现有的文档,再创建新......
  • python实现markdown文档编辑器应用
    常用的文档编辑器富文本编辑器,ckeditormarkdown编辑器,mdeditor项目中想要应用markdown编辑器:添加和编辑的页面中textarea输入框->转换为markdown编辑器1.tex......
  • postgres15删除数据库报错ERROR: database "***" is being accessed by other users
    postgres15删除数据库时报以下错误:postgres=#dropdatabasejw_admin;ERROR:database"jw_admin"isbeingaccessedbyotherusersDETAIL:Thereare3othersessio......
  • 层序遍历递归删除二叉树
    层序遍历递归删除二叉树什么是递归删除?从叶节点开始向根节点的方向逐层删除。直观的讲,对于以下二叉树,递归删除的次序为:f->g->h->i->d->e->b->c->a递......
  • 【ASP.NET Core Swagger】2、多文档(Group)
    生成器将在单个Swagger文档中包含所有API操作。但是,如有必要,您可以创建多个文档。例如,您可能希望每个API版本都有一个单独的文档。案例添加服务、中间件(v1、v2)b......