Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB(四)—-MongoDB的文档操作

MongoDB(四)—-MongoDB的文档操作

作者头像
全栈程序员站长
发布于 2021-04-07 08:27:20
发布于 2021-04-07 08:27:20
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。 MongoDB中的文档的数据结构JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。 BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

1.插入文档

1.1插入单个文档

注意: 1.新增时不需要考虑field,如果field已经存在则向指定field中新增。如果field不存在,则在collection中新添加一个filed 2.向collection中新增数据时,如果collection不存在,则自动创建collection 向dev集合中插入单个文档。 可以使用insert/insertOne/save执行新增,语法完全相同,下面是三种写法等效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.insert({
   name:"张三"});
db.c1.save({
   name:"张三"});
db.c1.insertOne({
   name:"张三"});

区别: 当明确给定主键时,如果主键值已经存在save表示修改,insert/insertOne会报主键重复。

1.2插入多个文档

可以使用insert/insertMany/save执行新增,区别于单条新增把新增函数参数由对象类型({})变成数组类型([{}])下面是三种写法等效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.insert([{
   name:"a"},{
   name:"b"}]);
db.c1.insertMany([{
   name:"a"},{
   name:"b"}]);
db.c1.save([{
   name:"a"},{
   name:"b"}]);

2.更新文档

MongoDB通过update函数或者save函数来更新集合中的文档。

2.1 update函数

update() 函数用于更新已存在的文档。 语法格式:db.COLLECTION_NAME.update({查询条件},{更新内容},{更新参数(可选)}) 其中更新内容为整个文档更新内容,如果更新内容中只有一个属性,除了_id以外其他属性将会被设置null。

2.2更新操作符

2.2.1 $set操作符

$set操作符:用来指定一个键并更新键值,若键不存在并创建。只能修改第一个document

语法格式:db.COLLECTION_NAME.update({查询条件},{更新操作符:{更新内容}})

$set的作用总结:

1.只修改特定的Field,解决update默认修改整个document情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"张三"},{
   $set:{
   name:"王五"}});

2.默认只修改符合条件的第一个document,如果需要全部修改,添加更新参数multi:true

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"张三"},{
   $set:{
   age:18}},{
   multi:true});

3.如果Field不存在,可以新建一个Field

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"张三"},{
   $set:{
   sex:"男"}})
2.2.2$inc操作符

可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。如果给定正数表示新增,如果给定负数表示减少。 把王五的年龄减少5岁。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"王五"},{
   $inc:{
   age:-5}});
2.2.3$unset操作符

主要是用来删除键。让键的值为空。在编写命令时$unset里field取值任意,无论给定什么值都表示删除。 删除名称为王五的地址。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"王五"},{
   $unset:{
   address:"随意"}});
2.2.4$push操作符

向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键。

向集合c1中所有文档对象添加了数组类型属性hobby,并添加一个值吃饭。如果再次执行,表示向hobby中再添加一个值写代码。默认只修改符合条件的第一条,如果需要全部修改,添加multi属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   },{
   $push:{
   hobby:"睡觉"}},{
   multi:true});
2.2.5$pop操作符

p o p 操 作 符 : 删 除 数 据 元 素 。 可 取 值 只 能 是 1 或 − 1 。 1 表 示 尾 部 删 除 , − 1 表 示 头 部 删 除 删 除 h o b b y 中 第 一 个 元 素 。 其 中 pop操作符:删除数据元素。可取值只能是1或-1。1表示尾部删除,-1表示头部删除 删除hobby中第一个元素。其中 pop操作符:删除数据元素。可取值只能是1或−1。1表示尾部删除,−1表示头部删除删除hobby中第一个元素。其中pop中key是要操作的数组类型属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"李四"},{
   $pop:{
   hobby:-1}})
2.2.6$pull操作符

$pull操作符:从数组中删除满足条件的元素,只要满足条件都删除。 删除hobby中元素内容为看视频,如果存在多个都删除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"王五"},{
   $pull:{
   hobby:"看视频"}});
2.2.7$pullAll操作符

$pullAll操作符:可以设置多个条件。 删除王五中hobby为写代码和视频的值。其中属性(hobby)取值一定要是数组类型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"王五"},{
   $pullAll:{
   hobby:["写代码","看视频"]}});
2.2.8$rename

$rename操作符:对键进行重新命名。任何类型的键都能重命名。

修改王五的name属性为username。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.update({
   name:"王五"},{
   $rename:{
   name:"username"}});

3.查询文档

3.1find()函数

语法格式为:find({查询条件(可选)},{指定投影的键(可选)}) 如果未给定参数则表示查询所有数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.find();

查询所有name为张三的文档对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.find({
   name:"张三"})

3.2投影操作

投影查询指的就是哪些列被显示或不被显示。写到投影(projection)里面的属性可取值为1(显示)或0(不显示)。除了_id以外其他属性取值必须是相同。 sex和hobby不显示,其他属性都显示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.find({
   name:"张三"},{
   sex:0,hobby:0})

显示sex和hobby,默认_id也是显示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.find({
   name:"张三"},{
   sex:1,hobby:1})

只显示sex和hobby。只有这种情况才能出现属性取值不一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.find({
   name:"张三"},{
   _id:0,sex:1,hobby:1})

3.3findOne()函数

findOne()函数只返回满足条件的第一条数据。 返回第一行document对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.findOne();

返回名字为张三的第一条数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.c1.findOne({
   name:"张三"})

发布者:全栈程序员栈长,转载请注明出处

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据库MongoDB-文档操作
在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。
cwl_java
2021/02/04
2.9K0
零基础学习MongoDB(五)—— 文档CRUD操作
语法格式:db.COLLECTION_NAME.insertOne(document)
小丞同学
2021/08/16
1.3K0
MongoDB系列---集合与文档操作03
  上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障。
Arebirth
2020/06/19
1.4K0
mongodb高级应用
一、  高级查询 查询操作符 条件操作符:db.collection.find({“field”:{$gt/$lt/$gte/$lte/$eq/$ne:value}}); 匹配所有:db.collection.find({age:{$all:[6,8]}});//字段的数组中符合全部条件才行。 判断字段存在:db.colletion.find({field:{$exists:true}})//还可用于remove等。 Null值的处理:db.collection.find({field:{“$in”:nul
一夕如环
2018/04/03
1.3K0
mongodb操作(概述以及相关的命令)
http://blog.csdn.net/ljfbest/article/details/11979609
bear_fish
2018/09/20
6550
最新的PHP操作MongoDB增删改查操作汇总
MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似。PHP7以前的版本和PHP7之后的版本对MongoDB的操作有所不同,本文主要以PHP7以前版本为例讲解PHP对MongoDB的各种操作,最后再简单说明一下PHP7以后版本对MongoDB的操作。
猿哥
2019/07/25
4.3K0
MongoDB基本概念
Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型,关系数据库的所使用的SQL语句自从 IBM 发明出来以后,已经有 40 多年的历史了,但是时至今日,开发程序员一般不太喜欢这个东西,因为它的基本理念和程序员编程的想法不一致。后来所谓的 NoSQL 风,指的就是那些不用 SQL 作为查询语言的数据存储系统,而文档数据库 MongoDB 正是 NoSQL 的代表。看一下当下数据库的排名就会发现,目前排在Mongodb数据库前面的无一例外是老牌的关系型数据库,而在NoSQL序列中,Mongodb排名第一,且有上升的趋势。
Java廖志伟
2022/03/07
6.7K0
MongoDB基本概念
浅尝辄止MongoDB:操作(2)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/82870557
用户1148526
2019/05/25
3.8K0
mongodb学习(一)
通过 MongoDB Shell(mongosh)是用于与 MongoDB 交互的命令行界面
落幕
2025/05/27
1550
mongodb学习(一)
MongoDB 安装及文档的基本操作
MongoDB 是一个基于分布式文件存储的半结构化的非关系型数据库。在海量数据中,可以较高性能的处理存取操作。它是以 BSON 格式进行数据存储(类似 JSON 格式,但类型更为丰富),因此对于复杂的数据类型,可以较轻松的保存和处理。同时,在非关系型数据库阵容中,相比其他数据库产品,它拥有更丰富的功能,并且与关系型数据库类型,所以对于新手使用也能快速上手。
ytao
2020/06/04
1.5K0
MongoDB 安装及文档的基本操作
数据库MongoDB-逻辑操作符
我们可以使用 a n d 操 作 符 来 表 示 多 条 件 间 的 并 且 关 系 。 由 于 and操作符来表示多条件间的并且关系。由于 and操作符来表示多条件间的并且关系。由于and有多个条件,所以类型是数组类型[],每个元素都是一个条件{}
cwl_java
2021/02/04
3080
初试MongoDB数据库
特征: 使用键值(Key Value)储存数据; MongoDB的逻辑结构是一种层次结构,主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。
九旬
2020/10/23
1.4K0
初试MongoDB数据库
MongoDB数据插入、删除、更新、批量更新某个字段
查询出hospitalName是xx医院和openId以2开头的所有记录,并且更新my_booking表中的payType为1.
周小董
2019/03/25
27.1K0
MongoDB数据插入、删除、更新、批量更新某个字段
MongoDB入门
MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
HUC思梦
2020/09/03
2.7K0
MongoDB入门
大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查
  • 数据库是按照数据结构来组织、存储和管理数据的仓库。   • 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。   • 所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。   • 说白了,数据库就是存储数据的仓库。
黑泽君
2019/05/15
18.4K0
MongoDB创建\更新\删除文档操作
{ "_id" :ObjectId("56aac1df4e61b6d9f84d17e0"), "bar" :"baz" }
艳艳代码杂货店
2021/10/27
1.3K0
mongodb 相关的查找,插入删除等操作
http://blog.csdn.net/mcpang/article/details/7833805
bear_fish
2018/09/20
1.5K0
MongoDB常用命令大全,概述、备份恢复
还记得MySQL、Redis、PostgreSQL、ClickHouse常用命令及操作吗?如果忘记可以到这里重新温习:MySQL常用命令,Redis常用命令,PostgreSQL常用命令,ClickHouse常用命令,启动、关闭、连接、备份、导入导出。本文重点讲述MongoDB常用命令。
寻求出路的程序媛
2024/07/17
1.5K0
MongoDB常用命令(2)
批量操作需要和选择器同时使用,第一个false表示不执行insertOrUpdate操作,第二个true表示执行批量
Tom弹架构
2022/01/04
1.1K0
Mongodb增删改查操作(下)
14.分页查询,查询众多结果中的第5到10条 db.c1.find().skip(5).limit(5);
陈不成i
2021/06/18
4350
推荐阅读
相关推荐
数据库MongoDB-文档操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验