关键词:
一、插入数据
1.1 插入单条文档
1.1.1 insert 函数
语法格式:db.collectionName.insert(文档)
db
是当前操作的数据库collectionName
是操作的集合,没有会自动创建- 插入的文档如果没有
_id
属性,会自动创建
例如在user
集合下插入单个文档
db.user.insert(name:"ljc",love:["soccer","music"])
在可视化工具中实操的结果,在命令行中结果一致!
1.1.2 insertOne 函数
在 MongoDB3.2 之后的版本中,提供了
insertOne()
函数用于插入文档,同时废弃了save
函数,因此就不学习它了,它的使用方法和insert
相同
语法格式:db.COLLECTION_NAME.insertOne(document)
例如在user
集合下插入单个文档
db.user.insertOne(name:"ddd",love:["play game","running"])
在可视化工具中实操的结果,在命令行中结果一致!
1.2 插入多条文档
向集合中批量插入多个文档时,需要使用数组来存放文档
1.2.1 insert 函数
语法格式:db.COLLECTION_NAME.insert([,,…])
例如采用insert
在user
中批量插入人员信息
db.user.insert([name:"张三",age:"18",name:"李四",age:"19"])
1.2.2 insertMany 函数
语法格式:db.COLLECTION_NAME.insertMany([,,…])
例如采用insertMany
在user
中批量插入人员信息
db.user.insertMany([name:"王五",age:"28",name:"唐六",age:"29"])
1.3 tips
db.COLLECTION_NAME.insertOne(document)
db.COLLECTION_NAME.insertMany(document)
db.COLLECTION_NAME.replaceOne(document)
参数说明
document
:要写入的文档writeConcern
:写入策略,默认为 1,即要求确认写操作,0 是不要求ordered
:指定是否按顺序写入,默认 true,按顺序写入
二、更新文档
MongoDB
通过update
函数或者save
函数来更新集合中的文档。
2.1 update 函数
update()
函数用于更新已存在的文档。
语法格式为:
db.COLLECTION_NAME.update(query,update,options)
query
:update
的查询条件,根据这个来选择需要更新的数据update
:update
的对象和一些更新的操作符upsert
:可选参数,意思是如果不存在需要更新的数据,是否要作为新数据插入集合中,参数值为true
或者false
,默认值是false
,不插入multi
:可选参数,是否批量更新,意思是当查询到多个符合查询条件的数据时,是否要全部更新,还是只更新第一条,默认是false
writeConcern
:可选参数,抛出异常的级别
实操
首先我们在user
集合下插入一些数据
db.user.insertMany([title:"html",page:300,title:"css",page:300,title:"js",page:200,title:"ts",page:250,title:"webpack",page:220])
插入成功
接下来我们来对集合中的数据进行更新
第一个需求:将html
的page
改成500
db.user.update(title:"html",title:"html",page:500)
特别注意:更新文档是更新整个文档的操作,即使只需要修改一个值,其他属性一样需要写下来,不然其他属性将被删除
第二个需求:将所有page为200的改为400
db.user.update(page:200,$set:page:400,multi:true)
操作结果
在上面采用了$set
操作符,用来只更新数据中的某个属性
2.2 updateOne 和updateMany
db.collection.updateOne()
向指定集合更新单个文档
db.collection.updateMany()
向指定集合更新多个文档
2.3 更新操作符
2.3.1 $set 操作符
用来指定一个键并更新键值,若键不存在则创建。也就是我们可以通过这个操作符,指定我们需要修改的属性,而不用更新整个文档
语法格式:db.COLLECTION_NAME.update(查询条件,更新操作符:更新内容)
将html
改成html5
db.user.update(title:"html",$set:title:"html5");
这样我们就将查找到的文档中的某个数据修改,而不删除其他数据
如果数据未被找到,则新建新增数据
2.3.2 $inc 操作符
对文档中满足要求的数字型的值进行增减操作,正则增,负则减
db.user.updateOne(title:"js",$inc:page:-20)
将title
为js
的数据的page
属性进行减20的操作
2.3.3 $unset 操作符
用来删除键,让键的值为空。在编写命令时$unset里更改数据取值任意,无论给定什么值都表示删除。
删除html
的page
db.user.update(title:"html",$unset:page:"aaaa");
2.3.4 $push 操作符
这里插入一个点:如果需要更改全部数据,我们的
query
属性填即可,也就是查找全部
向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。键不存在,则创建数组类型的键
给所有的文档添加一个auth
字段,值为ljc
db.user.update(,$push:auth:"ljc",multi:true);
从结果来看是添加成功,需要注意的是,数组,数组,数组!
2.3.5 $pop 操作符
删除数据中数组元素,取值只能是1或-1,1表示尾部删除,-1表示头部删除
首先我们先push
一下,让数组丰富一点,给html
添加多一个auth
db.user.update(title:"html",$push:auth:"htmlauth");
接下来演示pop
操作,删除html
中auth
数组的第一个值
db.user.update(title:"html",$pop:auth:-1)
2.3.6 pull 操作符
从数组中删除满足条件的元素,只要满足条件都删除
删除auth
数组中元素内容为ljc
db.user.update(title:"js",$pull:auth:"ljc")
2.3.7 pullAll 操作符
可以同时删除数组中的多个值
将ts
中auth
中ljc以及ccc
删除掉
db.user.update(title:"ts",$pullAll:auth:["ljc","ccc"]);
2.3.8 rename 操作符
对键进行重新命名。任何类型的键都能重命名
将所有title
的属性名改成name
db.user.update(,$rename:title:"name",multi:true)
成功将改成了name
三、删除文档
3.1 remove 函数
语法格式:
db.user.remove(<query>,justOne:<boolean>)
参数说明:
query
:可选删除的文档条件justOne
:删除多个或者一个文档。true
只删除一个,false
删除所有匹配的数据
删除name
值为html
的文档
db.user.remove(name:"html",justOne:true)
成功删除
删除所有数据
db.user.remove()
注意:remove
丰富不会真正的释放空间,需要执行db.repairDatabase()
来回收磁盘空间
3.2 deleteOne 函数
该方法只删除满足条件的第一条文档,相对于remove
简洁了很多
删除js
db.user.deleteOne(name:"js")
3.3 deleteMany 函数
删除满足条件的所有文档
删除所有page
为200
的文档
db.user.deleteMany(page:200)
四、查询文档
查询文档采用find
函数
语法格式
db.collection.find(query, projection)
query
:可选,指定查询的条件projection
:可选,使用投影操作符指定返回的键
**注意:**可以通过db.collection.find().pretty()
方法以易读的方式来读取数据
同样的可以使用
findOne
方法,返回一个文档
4.1 查询所有
查询所有文档
db.user.find()
根据名字去重
db.user.distinct("name")
注意:MongoDB中使用方法一般都要$
号开头
4.2 条件操作符
采用条件操作符用于比较两个表达式,再从集合中获取数据
语法格式:find(键:操作符:条件)
findOne
也可以噢~
4.2.1 $eq
等于操作符
查询所有page
为300的文档对象
db.user.find(page:$eq:300)
4.2.2 $lt
小于操作符
查询page
小于300
的文档对象
db.user.find(page:$lt:300)
4.2.3 $lte
小于或等于操作符
查询page
小于等于300
的文档对象
db.user.find(page:$lte:300)
4.2.4 $gt
大于操作符
查询page
大于250
的文档对象
db.user.find(page:$gt:250)
4.2.5 $gte
大于等于操作符
查询page
大于等于300
的文档对象
db.user.find(page:$gte:300)
4.2.6 $ne
不等于操作符
查询page
不等于300
的文档对象
db.user.find(page:$ne:300)
4.2.7 $in
多条件查询,只要满足in
中其中一个条件,就能被查询出来
查询page
为220
和300
的文档对象
db.user.find(page:$in:[300,220])
注意:$in后面的值是一个数组类型!!
4.2.8 $nin
于in
相反,除了in
中的都查询出来
查询page
不为220
和300
的文档对象
db.user.find(page:$nin:[300,220])
4.2.9 $and
查找同时满足多个条件的文档对象
语法格式:
db.col.find($and:[条件一,,条件二,…])
查询page
为300
并且name
值为node
的文档
db.user.find($and:[name:"node",page:300])
当同时指定多个查询条件时,默认是并列关系,因此我们可以直接写
db.user.find(name:"node",page:300)
4.2.10 $or
查询至少满足多个条件中其中一个的文档对象
查询page
为300
或者name
值为node
的文档
db.user.find($or:[name:"node",page:300])
4.2.11 $type 操作符
根据值类型来查询
查询page
为的值类型为number
的值
db.user.find(page:$type:"number")
数据类型如下,来自菜鸟教程
可以使用类型对应的数字来指定
db.col.find("title" : $type : 2)
等价于
db.col.find("title" : $type : 'string')
4.3 正则查询
利用正则表达式来查询特定格式的文档
查询name
以s
结尾,不区分大小写的文档
db.user.find(name:/s$/i)
4.4 投影查询
只选择文档中的部分数据,而不是整个文档全部数据
在
find()
方法中默认会显示一个文档中的全部字段,要限制这点只需要设置字段列表值0
或1
只显示name
值,同时不显示_id
db.user.find(,_id:0,name:1)
显示name
和page
db.user.find(,page:1,name:1)
注意:
_id
字段是默认存在的!!
不显示name
和page
db.user.find(,page:0,name:0)
特别注意:只有在设置_id:0
,的情况下才允许属性值不同,也就是对于除_id
以外的数据,不允许同时一个设置1
,一个设置0
例如:
db.user.find(,_id:0,page:1,name:0)
报错
4.5 数组查询
在我们的数据集中,常常会有数组的存在,因此,查询数组也是很重要的
- 查询
auth
数组中有ljc
的文档
db.user.find(auth:"ljc")
- 查询
auth
数组中既有ljc
又有cssauth
的文档
db.user.find(auth:$all:["ljc","cssauth"])
- 查询
auth
数组中第二个元素为ljc
的文档
通过
auth.1
来指定数组的第二个元素
db.user.find("auth.1":"ljc")
- 查询
auth
数组中第一个到第二个元素(其他字段保留)
db.user.find(,auth:$slice:[0,2])
- 查询
auth
数组中最后一个元素
db.user.find(,auth:$slice:-1)
4.6 排序
采用sort
方法,根据数据进行排序,使用1
和-1
来指定排序方式为升序还是降序
根据page
有小到大进行排序
db.user.find().sort(page:1)
4.7 分页
使用limit()
方法来读取指定数量的数据外,再使用skip()
方法来跳过指定数量的数据
语法格式:
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
实例
db.user.find.limit(2).skip(0) #前两个
db.user.find.limit(2).skip(2) #3,4
4.8 统计
count
用来计算符合条件的值有多少个
统计page
中小于270
的有多少个
db.user.count("page":$lt:270)
零基础学习mongodb——集合操作(代码片段)
零基础学习MongoDB(四)——集合操作一、创建集合使用db.createCollection()方法来创建集合语法格式:db.createCollection(name,options)参数说明:name:要创建的集合名称options:可选参数,指定有关内存大小及索引的选项options可... 查看详情
零基础学习mongodb——集合操作(代码片段)
零基础学习MongoDB(四)——集合操作一、创建集合使用db.createCollection()方法来创建集合语法格式:db.createCollection(name,options)参数说明:name:要创建的集合名称options:可选参数,指定有关内存大小及索引的选项options可... 查看详情
《mongodb入门教程》第06篇crud之创建文档(代码片段)
本文开始将会介绍MongoDB中的基本CRUD操作,首先我们来学习一下如何创建文档。使用insertOne()方法创建单个文档集合的insertOne()方法可以用于创建单个文档。该方法的语法如下:db.collection.insertOne(<document>,writeConcern:<d... 查看详情
零基础学习mongodb——连接数据库(代码片段)
一、安装MongoDB官网下载下载后,“下一步”安装即可二、启动MongoDB服务器命令行运行MongoDB服务,在安装完成之后会有MongoDB文件夹,运行bin目录下的mongod.exe文件或者可以将bin配置到环境变量path中三、连接数据库cmd命... 查看详情
零基础学习mongodb——连接数据库(代码片段)
一、安装MongoDB官网下载下载后,“下一步”安装即可二、启动MongoDB服务器命令行运行MongoDB服务,在安装完成之后会有MongoDB文件夹,运行bin目录下的mongod.exe文件或者可以将bin配置到环境变量path中三、连接数据库cmd命... 查看详情
node.js零基础详细教程:mongodb数据库操作
...此教程将教会大家安装Node、搭建服务器、express、mysql、mongodb、编写后台业务逻辑、编写接口,最后完成一个完整的项目后台,预计共10天课程。 数据库 数据库管理结构,一般分为两种:B/S架构 C/S架构。B/S架构: ... 查看详情
node.js零基础详细教程:node.js操作mongodb,及操作方法的封装
...此教程将教会大家安装Node、搭建服务器、express、mysql、mongodb、编写后台业务逻辑、编写接口,最后完成一个完整的项目后台,预计共10天课程。 node.js操作mangodb 创建一个用于放置今天文件的文件夹,npminit初始化一下,... 查看详情
python3操作mongodb的crud以及聚合案例,代码可直接运行(python经典编程案例)(代码片段)
基础篇(能解决工作中80%的问题):MongoDB的概述、应用场景、下载方式、连接方式和发展历史等MongoDB数据类型、重要概念以及shell常用指令MongoDB文档的各种增加、更新、删除操作总结MongoDB各种查询操作总结MongoDB对列的各... 查看详情
salesforcelightning零基础学习lightningdataservice(lds)(代码片段)
本篇可参看:https://trailhead.salesforce.com/modules/lightning_data_serviceLightning中针对object的detail页面,一个lightningapp可能包含了多个components,多个components不可避免的会对这个数据进行CRUD操作,如果我们针对每个component都在init操作时后台S... 查看详情
mongodb学习笔记
文章目录`MongoDB`学习笔记1.体系结构1.1与传统关系型数据库对比2.数据模型3.特点4.安装5.基本命令操作5.1数据库命名规范5.2数据库操作5.3集合操作5.3.1集合名称命名规范5.4文档CRUD5.4.1文档插入5.4.2文档查询5.4.3文档更新5.4.5文档删除... 查看详情
python3操作mongodb的crud以及聚合案例,代码可直接运行(python经典编程案例)(代码片段)
目录:基础篇(能解决工作中80的问题)01MongoDB的概述、应用场景、下载方式、连接方式和发展历史等02MongoDB数据类型、重要概念以及shell常用指令03MongoDB文档的各种增加、更新、删除操作总结04MongoDB各种查询操作以... 查看详情
零基础学习mongodb——管理用户(代码片段)
零基础学习MongoDB(三)——管理用户在b站上听了几个老师的课,有涉及到mongodb的一些历史,比如删库勒索,因此开放的数据库是很危险的,所以我们需要给它们添加管理用户,这样为我们的数据安全... 查看详情
零基础学习mongodb——管理用户(代码片段)
零基础学习MongoDB(三)——管理用户在b站上听了几个老师的课,有涉及到mongodb的一些历史,比如删库勒索,因此开放的数据库是很危险的,所以我们需要给它们添加管理用户,这样为我们的数据安全... 查看详情
零基础学习mongodb——mongodb简介(代码片段)
接下来会学习node.js以及mongodb数据库的知识,好好学习,天天向上!一、数据库简介数据库是按照数据结构来组织、存储和管理数据的仓库。我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电ÿ... 查看详情
零基础学习mongodb——mongodb简介(代码片段)
接下来会学习node.js以及mongodb数据库的知识,好好学习,天天向上!一、数据库简介数据库是按照数据结构来组织、存储和管理数据的仓库。我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电ÿ... 查看详情
《mongodb入门教程》第06篇crud之创建文档(代码片段)
本文开始将会介绍MongoDB中的基本CRUD操作,首先我们来学习一下如何创建文档。使用insertOne()方法创建单个文档集合的insertOne()方法可以用于创建单个文档。该方法的语法如下:db.collection.insertOne(<document>,writeConcern:<d... 查看详情
mongodb——mongodb安装+增删改查操作(代码片段)
MongoDB安装+MongoDB安装+增删改查操作MongoDB相关概念MongoDB简介MongoDB的特点MongoDB安装启动MongoDB启动Mongodb多进程关闭MongoDB基本常用命令选择和创建数据库数据库的删除集合操作集合的显示创建(了解)集合的隐式创建... 查看详情
mongodb——mongodb安装+增删改查操作(代码片段)
MongoDB安装+MongoDB安装+增删改查操作MongoDB相关概念MongoDB简介MongoDB的特点MongoDB安装启动MongoDB启动Mongodb多进程关闭MongoDB基本常用命令选择和创建数据库数据库的删除集合操作集合的显示创建(了解)集合的隐式创建... 查看详情