我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用MongoDB操作文档

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用MongoDB操作文档

本篇文章中将讲解如何使用MongoDB操作文档。

文档的数据结构和JSON基本一致,所有存储在集合中的数据都是BSON格式。BSON是一种类似json格式的一种二进制形式的存储格式,简称Binary JSON。

一、插入文档

MongoDB使用insert()或save()方法向集合中插入文档,语法如下:

db.COLLECTION_NAME.insert(document)

例如:以下文档可以存储在MongoDB的test数据库的MongoDBTest集合中:

{"title" : "MongoDB", "description" : "mongoDB是一个NoSql数据库", "tags" : "NoSql" }

1、使用insert()方法插入文档

在上面的例子中,MongoDBTest是我们的集合名,如果该集合不在该数据库中,MongoDB会自动创建该集合并插入文档。doc是定义的变量,可以以变量的形式插入集合。

查看已经插入的文档:

> db.MongoDBTest.insert(doc)
WriteResult({ "nInserted" : 1 })
> db.MongoDBTest.find()
{ "_id" : ObjectId("5a6f13e72d0b37669c5d2a78"), "title" : "MongoDB", "description" : "mongoDB是一个NoSql数据库", "tags" : "NoSql" }
>

2、使用save()方法插入文档

插入文档也可以使用save()方法。如果不知道_id字段save()方法类似于insert()方法。如果指定_id字段,则会更新该_id的数据。

下面的例子表示使用save()命令更新数据:

二、查询文档

MongoDB查询文档使用find()方法。

find()方法以非结构化的方式来显示所有文档。

1、语法

MongoDB查询数据的语法格式如下:

db.collection.find(query,projection)

参数说明:

  • query:可选参数,使用查询操作符指定查询条件。
  • projection:可选参数,使用投影操作符指定返回的键。如果查询时要返回文档中所有键值,只需省略该参数即可(默认省略)。

如果你需要格式化读取的数据,可以使用pretty()方法,语法格式如下:

db.collection.find().pretty()

pretty()方法以格式化的方式来显示所有文档。

2、实例

例如:查询Student集合中的所有文档。

除了find()方法之外,还有一个findOne()方法,它只返回一个文档。

MongoDB与RDBMS where语句比较

如果你熟悉常规的SQL数据,通过下表可以更好的理解MongoDB的条件语句查询:

操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.Student.find({"name":"张三"}).pretty()where name='张三'
小于{<key>:{$lt:<value>}}db.Student.find({"score":{$lt:"80"}}).pretty()where score<80
小于或等于{<key>:{$lte:<value>}}db.Student.find({"score":{$lte:"80"}}).pretty()where score<=80
大于{<key>:{$gt:<value>}}db.Student.find({"score":{$gt:"80"}}).pretty()where score>80
大于或等于{<key>:{$gte:<value>}}db.Student.find({"score":{$gte:"80"}}).pretty()where score>=80
不等于{<key>:{$ne:<value>}}db.Student.find({"score":{$ne:"80"}}).pretty()where score!=80

(1)查询name是张三的学生

db.Student.find({"name":"张三"}).pretty()

查询结果如下图所示:

(2)查询成绩小于80的学生

db.Student.find({"score":{$lt:"80"}}).pretty()

查询结果如下图所示:

(3)查询成绩小于等于80的学生

db.Student.find({"score":{$lte:"80"}}).pretty()

查询结果如下图所示:

(4)查询成绩大于80分的学生

db.Student.find({"score":{$gt:"80"}}).pretty()

(5)查询成绩大于等于80分的学生

db.Student.find({"score":{$gte:"80"}}).pretty()

查询结果如下图所示:

(6)查询成绩不等于80分的学生

db.Student.find({"score":{$ne:"80"}}).pretty()

查询结果如下图所示:

3、MongoDB AND条件查询

MongoDB的find()方法可以传入多个键(key),每个键(key)以逗号分隔开,等价于常规SQL的AND条件。

语法格式如下:

db.collection.find({key1:value1,key2:value2}).pretty()

例如:查询姓名为张三并且课程是C#程序设计的学生信息。

db.Student.find({"name":"张三","subject":"C#程序设计"}).pretty()

查询结果如下图所示:

以上实例中类似于RDBMS中的where语句:WHERE name='张三' AND subject='C#程序设计'。

4、MongoDB OR 条件查询

MongoDB的OR条件语句使用了关键字$or,语法格式如下:

>db.collection.find(
  {
    $or:[
           {key1:value1},{key2:value2}
        ]
   }
)

例如:查询姓名是李四或者成绩等于80的学生

db.Student.find({$or:[{"name":"李四"},{"score":"80"}]}).pretty()

查询结果如下图所示:

三、更新文档

MongoDB使用update()和save()方法来更新集合中的文档。接下来让我们详细来看下两个方法的应用及其区别。

1、update()方法

update()方法用于更新已经存在的文档。语法格式如下:

db.collection.update(
  <query>,
  <update>,
 {
   upsert:<boolean>,
   multi:<boolean>,
   writeConcern:<document>
  }
)

参数说明:

  • query:update的查询条件,类似sql update查询内where后面的条件。
  • update:update的对象和一些更新的操作符(如$set,Sinc......)等,也可以理解为sql update查询内set后面的。
  • upsert:可选参数,这个参数的意思是:如果不存在update的记录,是否插入新的文档。如果为true则插入,默认是false不插入。
  • multi:可选参数,MongoDB默认是false,只更新找到的第一条记录。如果这个参数为true,就把按条件查询出来的多条记录全部更新。
  • writeConcern:可选参数,抛出异常的级别。

writeConcern的几种抛出异常的级别参数

  • writeConcern.NONE:没有异常抛出。
  • writeConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常抛出。
  • writeConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
  • writeConcern.MAJORITY:抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
  • writeConcern.FSYNC_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
  • writeConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
  • writeConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。

例如:使用update()方法更新标题(title)

上面的语句只会更新第一条查询到的文档,如果你要更新多条相同的文档,则需要设置multi参数为true。

如果要更新的数据不存在,upsert参数设置为true则会插入数据。

2、save()方法

save()方法通过传入的文档来替换已有文档,语法格式如下:

db.collection.save(
  <document>,
  {
    writeConcern:<document>
  }
)

参数说明:

  • document:要更新的文档数据。
  • writeConcern:可选参数,抛出异常的级别。

例如:更新_id=5a702a7f2c6ed8f4d3491831的文档。

四、删除文档

MongoDB使用remove()方法来移除集合中的数据。

注意:在执行remove()方法前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

remove()方法的基本语法格式如下:

db.collection.remove(
  <query>,
  <justOne>
)

如果MongoDB是2.6版本以后的,语法格式如下:

db.collection.remove(
  <query>,
  {
    justOne:<boolean>,
    writeConcern:<document>
   }
)

参数说明:

  • query:可选参数,删除文档的条件。
  • justOne:可选参数,如果设为true或1,则只删除一个文档。
  • writeConcern:可选参数,抛出异常的级别。

实例

1、删除title为MongoDB教程的文档,只删除一个:

2、删除所有数据

如果想删除所有数据,可以使用下面的例子

到此这篇关于使用MongoDB操作文档的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用MongoDB操作文档

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MongoDB文档操作(5)

添加文档语法:db.集合名.insert({k1:"v1", k2:"v2"....})注意:(1)文档就是键值对,数据类型是BSON格式,支持的值更加丰富。比如:db.集合名.insert({name:"bashlog", spc:{weight:100,
MongoDB文档操作(5)
2020-01-10

怎样进行MongoDB文档查询操作

这篇文章将为大家详细讲解有关怎样进行MongoDB文档查询操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。nullnull的查询稍微有点不同,假如我想查询z为null的数据,如下:db.s
2023-06-19

mongodb嵌套文档的操作是什么

在MongoDB中,嵌套文档的操作指的是对嵌套在文档中的子文档进行增删改查操作。以下是一些常见的嵌套文档操作:1. 插入嵌套文档:- 使用 `$push` 操作符将子文档插入到父文档的嵌套字段中。- 使用 `$addToSet` 操作符将子
2023-09-06

MongoDB中怎么实现文档查询操作

今天就跟大家聊聊有关MongoDB中怎么实现文档查询操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基本操作游标这个概念在很多地方都有,Java中JDBC里的ResultSet,A
2023-06-19

Python中怎么操作MongoDB文档数据库

Python中怎么操作MongoDB文档数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.Pymongo 安装安装pymongo:pip install pymongoP
2023-06-02

MongoDB查询文档怎么使用

这篇文章主要介绍“MongoDB查询文档怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MongoDB查询文档怎么使用”文章能帮助大家解决问题。一、查询文档MongoDB 查询文档使用 fin
2023-07-02

python操作docx文档

在2017年暑假绿盟实习期间,部门做的一个项目需要用到docx格式的word文档模板操作,现在有如下记录:     关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-
2023-01-31

使用python语言操作MongoDB

MongoDB是一个跨平台的NoSQL,基于Key-Value形式保存数据。其储存格式非常类似于Python的字典,因此用Python操作MongoDB会非常的容易。pymongo的两种安装命令pip install pymongoeasy
2023-01-31

Python使用yaml模块操作YAML文档的方法

YAML是可读性高,用来表达数据序列化格式的,专用于写配置文件的语言,这篇文章主要介绍了Python使用yaml模块操作YAML文档,需要的朋友可以参考下
2023-01-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录