广告位联系
返回顶部
分享到

使用MongoDB操作文档

MongoDB 来源:互联网 作者:秩名 发布时间:2022-03-08 09:29:02 人浏览
摘要

本篇文章中将讲解如何使用MongoDB操作文档。 文档的数据结构和JSON基本一致,所有存储在集合中的数据都是BSON格式。BSON是一种类似json格式的一种二进制形式的存储格式,简称Binary JS

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

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

一、插入文档

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

1

db.COLLECTION_NAME.insert(document)

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

1

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

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

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

查看已经插入的文档:

1

2

3

4

5

> 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查询数据的语法格式如下:

1

db.collection.find(query,projection)

参数说明:

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

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

1

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是张三的学生

1

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

查询结果如下图所示:

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

1

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

查询结果如下图所示:

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

1

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

查询结果如下图所示:

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

1

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

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

1

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

查询结果如下图所示:

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

1

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

查询结果如下图所示:

3、MongoDB AND条件查询

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

语法格式如下:

1

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

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

1

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

查询结果如下图所示:

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

4、MongoDB OR 条件查询

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

1

2

3

4

5

6

7

>db.collection.find(

  {

    $or:[

           {key1:value1},{key2:value2}

        ]

   }

)

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

1

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

查询结果如下图所示:

三、更新文档

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

1、update()方法

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

1

2

3

4

5

6

7

8

9

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()方法通过传入的文档来替换已有文档,语法格式如下:

1

2

3

4

5

6

db.collection.save(

  <document>,

  {

    writeConcern:<document>

  }

)

参数说明:

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

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

四、删除文档

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

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

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

1

2

3

4

db.collection.remove(

  <query>,

  <justOne>

)

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

1

2

3

4

5

6

7

db.collection.remove(

  <query>,

  {

    justOne:<boolean>,

    writeConcern:<document>

   }

)

参数说明:

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

实例

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

2、删除所有数据

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.cnblogs.com/dotnet261010/p/8379464.html
相关文章
  • MongoDB实现创建删除数据库、创建删除表(集合

    MongoDB实现创建删除数据库、创建删除表(集合
    一、 数据库使用 开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 1 mongod --dbpath c:\mongodb 管理 mongodb 数据库:(一定要在新
  • MongoDB数据库基本概念介绍

    MongoDB数据库基本概念介绍
    不管我们要学习什么数据库,都应该学习其中的基础概念,在MongoDB中基本的概念是文档、集合、数据库,下面挨个介绍。 下面的表格将会帮
  • MongoDB连接和创建数据库的方法

    MongoDB连接和创建数据库的方法
    一、连接MongoDB 在连接MongoDB前确保启动MongoDB服务,只需要在MongoDB安装目录的bin目录下执行mongo.exe即可。 执行启动操作后,mongodb在输出一些
  • 使用MongoDB操作文档

    使用MongoDB操作文档
    本篇文章中将讲解如何使用MongoDB操作文档。 文档的数据结构和JSON基本一致,所有存储在集合中的数据都是BSON格式。BSON是一种类似json格式
  • Laravel框架中使用MongoDB数据库的操作

    Laravel框架中使用MongoDB数据库的操作
    1、先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb 2、执行
  • SpringBoot整合mongoDB并自定义连接池的示例代码
    得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoTemplate,它可以很容易的操作mongoDB数据库。
  • 剖析后OpLog订阅MongoDB的数据变更就没那么难了

    剖析后OpLog订阅MongoDB的数据变更就没那么难了
    前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛
  • MongoDB的备份与恢复的介绍
    任何数据库都离不开日常的备份与恢复,这二者是数据库安全的前提,MongoDB的备份与恢复方法一般而言都采用自带的工具来进行。 在开始讲
  • Oracle数据库下载与安装的完整步骤的介绍
    一、Oracle 数据库下载 访问 Oracle 数据库下载官网 选择目标版本数据库进行下载,本文以11gR2为例进行讲解。 访问Oracle 11gR2 下载官网https:/
  • 详解MongoDB操作符中的$elemMatch问题
    问题 如果MongoDB 数据库集合中仅存在一条记录 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { _id : ObjectId( 5e6b4ef546b5f44e5c5b276d ), name : 赵小明 , us
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计