MongoDB对数据的操作

MongoDB的集合操作

mongodb中的集合是一组文档的集,相当于关系型数据库中的一张表

  1. 创建集合
  • MongDB使用db.createCollection()函数来创建集合
  • 语法格式为:db.createCollection(name,options)
  • name:要创建的集合名称。
  • options:可选参数,指定有关内存大小及索引的选项。

1.1使用默认集合

在mongodb中我们可以不用创建集合,当我们插入一些数据时,会自动创建集合,并且会使用数据库的名字作为该集合的名称

  1. 创建一个新的数据库advance
  2. 将mm1的用户的db设置为advance库中:在该库下创建db.createUser({user:‘mm1’,pwd:‘mm1pwd’,roles:[{role:‘readWrite’,db:‘advance’}]})
  3. 使用mm1来认证操作数据库(在那个数据库创建用户就要在那个数据库认证):db.auth(‘mm1’,‘mm1pwd’)
  4. 想advance库中插入一条数据:db.advance.insert({“id”:“100”})
  5. 查看库中的集合:show collections

1.2创建没有参数的集合

在advance库中创建一个adv集合:db.createCollection(“adv”),如果mongodb开启了权限认证

1.3创建一个带参数的集合

在advance数据库中创建一个名为adv2的固定集合,整个集合空间大小为2000kb,文档最大数为100:db.createCollection(“dev2”,{capped:true,autoIndexId:true,size:2000,max:100})

2.查看集合

如果要查看已有的集合,可以使用show collections或者是show tables

3.删除集合

如果我们要删除集合,需要先切换到集合所在的数据库,使用drop()函数删除集合即可
删除dev2集合:db.dev2.drop()

MongoDB的文档操作

在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档(即数据)
MongoDB中的文档的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式
BSON是一种类似JSON的二进制的存储格式
1.1 使用insert将文档插入到集合adv中:db.adv.insert({name:‘mubai’,age:‘21’,school:[‘小学’,‘初中’,‘高中’]})
1.2使用save将文档插入到集合中adv中:db.adv.save({name:‘mubai’,age:‘21’,school:[‘小学’,‘初中’,‘高中’]})
1.3在mongodb3.2以后提供了insertOne函数用于插入文档:db.adv.insertOne({name:‘mubai01’,age:‘21’,school:[‘小学’,‘初中’,‘高中’]})
2.1 插入多个文档 向集合中批量插入多个文档时,需要使用数组来存放文档
2.2使用insert插入:db.adv.insert([{name:‘mm1’,age:‘1’,amount:[‘1’,‘2’,‘3’,‘4’]},{name:‘mm2’,age:‘2’,amount:[‘1’,‘2’,‘3’,‘4’]}])
2.3使用save插入:db.adv.save([{name:‘mm1’,age:‘1’,amount:[‘1’,‘2’,‘3’,‘4’]},{name:‘mm2’,age:‘2’,amount:[‘1’,‘2’,‘3’,‘4’]}])
2.4查看文档:db.adv.find()
2.5在mongodb3.2以后提供了insertMany函数,db.adv.insertMany([{name:‘mm1’,age:‘1’,amount:[‘1’,‘2’,‘3’,‘4’]},{name:‘mm2’,age:‘2’,amount:[‘1’,‘2’,‘3’,‘4’]}])
3.1 通过变量插入文档
MongoDB Shell工具允许我们定义变量,所有的变量类型为var类型,我们可以将变量作为任意插入文档的函数参数
格式:变量名={变量值}
3.2定义变量给变量赋值:demo=({name:“ms1”,amount:[‘1’,‘2’,‘3’]})
3.3插入变量:db.adv.save(demo)
3.4通过变量插入多个文档 :demo=([{name:‘mm1’,age:‘2’},{name:‘mm2’,age:‘2’},{name:‘mm3’,age:‘2’}])
3.5:db.adv.save(demo)
注意:使用mongodb shell的方式插入数据,该变量仅仅在当前窗口生效,关闭窗口则会失效,变量是存在缓存当中的
4.1更新文档使用save或者update函数来执行
update()函数用于更新已存在的文档
格式:db.adv.update({查询条件},{更新内容},{更新参数(可选)})
4.2将mm1的数据更改:db.adv.update({age:‘1’},{name:‘ms’,age:‘3’}),注意的是,在完成更新操作的时根据查询条件来更新内容,如果不需要更新的内容也需要写入,不然更新时数据会丢失

更新操作符号$set

$set操作符:用来指定一个键并更新键值,若键不存在则会创建该键值。
语法格式:db.adv.update({查询条件},{更新操作符:{更新内容}})
1.1使用 $set更新文档数据:db.adv.update({age:‘1’},{$set:{name:‘ms’,age:‘3’}})
1.2使用set来添加文档数据:db.adv.update({age:‘1’},{$set:{addr:‘湖北’}})
1.3多个文档的更新:db.adv.update({name:‘ms’},{$set:{age:‘18’,amount:[‘1’,‘2’,‘3’]}},{multi:true})
使用multi对数据进行批量的更新操作

$inc操作符

$inc操作符:可以对文档某个为数字型(只能是数字型)的键进行增减操作
db.adv.update({name:‘mm1’},{$inc:{age:2}},{multi:true})
递减则改为负数即可

$unset操作符

$unset操作符:用来删除键
:db.adv.update({name:‘ms’},{$unset:{age:‘18’}})

$push操作符

$push操作符:向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据,添加时如果键存在,要求键值必须为数组,键不存在则创建数组类型的键
db.adv.update({name:‘ms’},{$push:{amount:1}})
如果添加的是数组,则会在该数组的后面一位上追加一个数组类型的值

$pop操作符号

删除数据元素
1表示从数组的尾部删除:db.dev.update({name:‘mm1’},{$pop:{amount:1}})
-1则表示是从数组头部删除

$pull操作符号

从数组中删除满足条件的元素
db.adv.update({name:‘ms’},{$pull:{amount:1}})
或删除数组中所有满足条件的元素

$pullAll操作符号

从数组中删除满足条件的多个元素
db.adv.update({name:‘ms’},{$pullAll:{amount:[“1”,“2”]}})

$rename操作符

对键进行重新命名:db.adv.update({name:‘ms’},{$rename:{“amount”:“amounts”}})

使用save()函数来更新文档

save()方法通过传入的文档来替换已有文档
save()方法通过传入文档来替换已有文档:db.adv.save({"_id" : ObjectId(“6184c67867939d2d927064cc”),name:‘mubai1’})

删除文档

remove()函数

使用remove()函数可删除集合中的指定文档。
语法格式:remove({指定删除条件},删除参数(可选参数))
因为remove函数会删除所有满足条件的文档,所有可以用_id来指定需要删除的文档
db.adv.remove({"_id" : ObjectId(“6184a4f367939d2d927064cb”)})
如果使用的条件在集合中可以匹配多条数据,那么remove()函数会删除所有满足条件的数据
db.adv.remove({name:“ms”},1)可以在后面添加参数,该参数1或者2都是删除第一条数据
注意:remove()方法不会释放空间,需要拥有dbAdminAnyDatabase权限内的用户执行db.repairDatabase()来回收磁盘空间。

deleteOne()函数

该函数是官方推荐删除文档的方法,该方法只删除满足条件的第一条文档db.adv.deleteOne({name:‘mm1’})

deleteMany()函数

deleteMany函数是官方推荐的删除方法,该方法删除满足条件的所有数据
:db.adv.deleteMany({name:“ms”})

删除集合中的所有文档

使用remove函数删除集合中的所有文档
语法格式:remove({})
使用deleteMany函数删除集合中的所有文档
语法格式:deleteMany({})

查询文档

find()函数

在MongoDB中可以使用find()函数查询文档
格式:find({查询条件(可选)},{指定投影的键(可选)})
db.adv.find({name:‘mm2’}).pretty():查询name=mm2格式化输出

findOne()函数

只能返回满足条件的第一条数据,如果未做投影操作该方法自带格式化输出功能
:db.adv.findOne({name:“mubai”})

模糊查询

在MongoDB中可以通过//与^和$实现模糊查询,使用模糊查询时条件不能放到双引号或单引号
:db.adv.find({name:/m/}):查询包含m
:db.adv.find({name:/^m/}):查询以m开头
:db.adv.find({name:/m$/}):查询以m结尾的

find()函数投影操作

在find函数中可以指定投影键
格式:find({查询条件},{投影键名:1(显示该列),投影键名:0(不显示该列)})
db.adv.find({name:‘mm2’},{age:1,_id:0}):显示name为mm1的文档中age键,不显示_id键

条件操作符

$gt >

条件操作符用于比较两个表达式并从mongodb集合中获取数据
:db.adv.find({age:{$gt:3}})

$lt <

该操作符可以对数字或日期进行判断
:db.adv.find({age:{$lt:3}})

$gte >=

db.adv.find({age:{$gte:3}})

$lte <=

db.adv.find({age:{$lte:3}})

$eq ==

$ne !=

$and

使用该操作符表示多条件间并且关系
格式:find({$and:[{条件一},{条件二}]})

如果在查询中给定了多个查询条件,条件之间默认关系为and
db.adv.find({age:{$gt:1,$lt:5}})
使用and的查询
db.adv.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{age:{gt:1,KaTeX parse error: Expected 'EOF', got '}' at position 5: lt:5}̲},{name:{eq:‘mm3’}}]})

MongoDB对数据的操作相关推荐

  1. 用python向mongodb插入数据_Python操作MongoDB数据库(一)

    Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...

  2. java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法

    Java操作MongoDB插入数据进行模糊查询与in查询功能 由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法 具体如下: 存放mongodb: /** * 公共方法:设置Obj ...

  3. java操作mongodb查询总数_java操作mongodb——查询数据

    field为查询字段,value为查询值,也可以通过过滤器Filters,Filters提供了一系列查询条件的静态方法 相等 - = FindIterable iter = doc.find(new ...

  4. python操作sqlserver如何判断删除的数据不存在_Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法...

    本文实例讲述了Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法.分享给大家供大家参考,具体如下: 前言: 想把QQ日志爬虫(Python)爬下来的日志保存到 MongoD ...

  5. MongoDB数据库(2.MongoDB对数据库的操作以及Mongodb的增删改查)

    MongoDB中对数据库的相关操作 1. 查看当前已有的数库   show  dbs    或者   show  databases 2.进入数据库   use 数据名          如果没有这个 ...

  6. MongoDB搭建和简单操作(windows环境)

    昨天看到fish的MongoDB,但遇到不少问题,于是自己一步一步尝试,将遇到之问题和解决方法记录总结 首先感谢fish!昨天忘了放链接:http://www.cnblogs.com/fish-li/ ...

  7. linux进入mongodb数据库命令,MongoDB 常用数据库命令,命令是如何工作的这里

    MongoDB 常用数据库命令,命令是如何工作的这里 mongoDB提供了广泛的数据库命令,除常用的create,read,update,delete之外所有功能. 命令是如何工作的 这里有个你比较熟 ...

  8. python字典导入mongodb_python连接mongoDB进行数据提取→常用操作指南

    1. 连接mongo 需要知道mongoDB的地址.端口.授权用户.授权密码.一般情况下,技术都会给到数据分析人员这些信息. python没有安装模块pymongo模块的,在cmd里面,pip ins ...

  9. MongoDB(三):数据库操作、集合操作

    1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了. 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key= ...

最新文章

  1. 扩增子三部曲:2分析流程(共7节万字)
  2. Centos7通过yum安装最新MySQL
  3. Django 电脑使用管理
  4. php实现目录及目录文件下的遍历
  5. 网站能拿到其他网站的cookie_如何设计网站能让网站建设的更有吸引力
  6. iOS 计算文字宽度的一个细节
  7. 口袋之旅html5超强账号,口袋之旅特攻排行榜 强大的绝对能力
  8. 二流学校的计算机博士,“二流大学”的博士,值得读吗?想的尴尬症都犯了
  9. 矩阵论:向量求导/微分和矩阵微分
  10. chrome 下载东西 失败禁止_如何修复最常见的Google Chrome下载错误
  11. 多元非线性方程组 matlab,基于matlab的非线性方程组求解的方法
  12. android 360 root权限获取root权限,安卓手机如何Root 使用360手机助手获取root权限图为教程...
  13. c++ 多边形求交集代码(凸多边形与凸多边形交集)
  14. sd卡烧写linux内核,uboot从SD卡烧写内核和文件系统
  15. Java对象内存布局(JOL)
  16. CIC 滤波器——不同长度的单级CIC滤波器的频谱特性
  17. 使用away3d 精灵表实现材质动画
  18. 【ava数据集】ava数据集下载 使用迅雷
  19. 电子宠物小狗-内部结构是什么?
  20. IC验证培训——实战SV验证学习(lab6)

热门文章

  1. Happy Children‘s Day
  2. POI 3.9根据word模板生成报表
  3. 3GPP R15 5GNR 协议概述
  4. java 中日期的年-月-日格式符该设置为“yyyy-MM-dd“
  5. Tabulator使用
  6. Tabulator本地分页和远程分页
  7. 这些Web API真的有用吗? 别问,问就是有用
  8. k8s笔记7.2--搭建私有helm仓库
  9. jsp基础之--使用Session完成简单的登陆操作
  10. Oracle数据库中的包(七)