广告
返回顶部
首页 > 资讯 > 数据库 >mongoDB中CRUD如何使用
  • 936
分享到

mongoDB中CRUD如何使用

2024-04-02 19:04:59 936人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关mongoDB中CRUD如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.在存储上面,非关系型数据库可以更大规模的存储,打个比方

这期内容当中小编将会给大家带来有关mongoDB中CRUD如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1.在存储上面,非关系型数据库可以更大规模的存储,打个比方,Facebook用的数据库就是非关系型数据库。

2.运用起来更加流畅也是这个数据库的优点,将分布式的特点发挥到极致。

当我查看官方文档的时候,简直要人命,光是一个插入方法都讲了好几条,脑袋都大了,现在我总结一下每一插入方法的特性

db.collection.insert()

db.collection.insert()集合插入一个或多个文档.要想插入一个文档,传递一个文档给该方法;要想插入多个文档,就可以采用该方法。

例如

db.users.insert(
   [
    { name: "bob", age: 42, status: "A", },
    { name: "ahn", age: 22, status: "A", },
    { name: "xi", age: 34, status: "D", }
   ]
   )

如果插入成功就会返回

WriteResult({ "nInserted" : 3 })

如果异常情况,那么就会返回如下咯:

WriteResult({
   "nInserted" : 3,
   "writeConcernError" : {
    "code" : 64,
    "errmsg" : "waiting for replication timed out at shard-a"
   }
   })

当我们想插入一条数据的时候,采用insert的方法据比较浪费内存,这个时候,我们久采用插入单个的语法db.collection.insertOne() 向集合插入 单个 文档 document 举个小列子来说明一下。

db.users.insertOne(
   {
    name: "sue",
    age: 19,
    status: "P"
   }
   )

有了单个,就肯定会有多个,那么多个又是怎么样的呢?语法都很类似,db.collection.insertMany()这个语法跟上面没有区别嘛,对不对,当然是错的,你想,如果添加的数据是数组里面嵌套数组,前面两个的方法的性能就大打折扣了,影响数据库的性能。废话少说,列子走一波:

db.users.insertMany(
   [
    {
    _id: 1,
    name: "sue",
    age: 19,
    type: 1,
    status: "P",
    favorites: { artist: "Picasso", food: "pizza" },
    finished: [ 17, 3 ],
    badges: [ "blue", "black" ],
    points: [
     { points: 85, bonus: 20 },
     { points: 85, bonus: 10 }
    ]
    },
    {
    _id: 2,
    name: "bob",
    age: 42,
    type: 1,
    status: "A",
    favorites: { artist: "Miro", food: "meringue" },
    finished: [ 11, 25 ],
    badges: [ "green" ],
    points: [
     { points: 85, bonus: 20 },
     { points: 64, bonus: 12 }
    ]
    },
    {
    _id: 3,
    name: "ahn",
    age: 22,
    type: 2,
    status: "A",
    favorites: { artist: "Cassatt", food: "cake" },
    finished: [ 6 ],
    badges: [ "blue", "Picasso" ],
    points: [
     { points: 81, bonus: 8 },
     { points: 55, bonus: 20 }
    ]
    },
    {
    _id: 4,
    name: "xi",
    age: 34,
    type: 2,
    status: "D",
    favorites: { artist: "Chagall", food: "chocolate" },
    finished: [ 5, 11 ],
    badges: [ "Picasso", "black" ],
    points: [
     { points: 53, bonus: 15 },
     { points: 51, bonus: 15 }
    ]
    },
    {
    _id: 5,
    name: "xyz",
    age: 23,
    type: 2,
    status: "D",
    favorites: { artist: "Noguchi", food: "nougat" },
    finished: [ 14, 6 ],
    badges: [ "orange" ],
    points: [
     { points: 71, bonus: 20 }
    ]
    },
    {
    _id: 6,
    name: "abc",
    age: 43,
    type: 1,
    status: "A",
    favorites: { food: "pizza", artist: "Picasso" },
    finished: [ 18, 12 ],
    badges: [ "black", "blue" ],
    points: [
     { points: 78, bonus: 8 },
     { points: 57, bonus: 7 }
    ]
    }
   ]
   )

注意:insertOne()、insertMany()是3.2版本的语法。

既然增了,就得查找,对吧,查找里面呢也有很多小东西,有许多自己自定义查询。

1、查询全部

db.users.find( {} ) 等价于db.users.find()

2、指定等于条件

一个 query filter document 可以使用 <field>:<value> 表达式指定等于条件以选择所有包含 <field> 字段并且等于特定 <value> 的所有文档:

下面的示例从 user 集合中检索 status 字段值为 “P” 或者 “D” 的所有文档:

db.users.find( { status: { $in: [ "P", "D" ] } } )

3、指定 AND 条件

复合查询可以在集合文档的多个字段上指定条件。隐含地,一个逻辑的 AND 连接词会连接复合查询的子句,使得查询选出集合中匹配所有条件的文档。

下面的示例在 users 集合中检索 status 等于 "A"``**并且** ``age 小于 ($lt) 30是所有文档:

db.users.find( { status: "A", age: { $lt: 30 } } )

4、指定 OR 条件

通过使用 $or 操作符,你可以指定一个使用逻辑 OR 连接词连接各子句的复合查询选择集合中匹配至少一个条件的文档。

下面的示例在 users 集合中检索 status` 等于 "A"**或者**age 小于 ($lt) 30 所有文档:

db.users.find(
      {
        $or: [ { status: "A" }, { age: { $lt: 30 } } ]
      }
      )

5、指定 AND 和 OR 条件(可以更加精确的查询)

在下面的示例中,复合查询文档选择集合中status`` 等于 "A" 并且 要么 age 小于 ($lt) 30 要么 type 等于 1 的所有文档:

db.users.find(
      {
        status: "A",
        $or: [ { age: { $lt: 30 } }, { type: 1 } ]
      }
      )

6、嵌入文档上的精确匹配

使用{ <field>: <value> }并且 “” 为要匹配文档的查询文档,来指定匹配整个内嵌文档的完全相等条件.(要使)相等条件匹配上内嵌文档需要指定 包括字段顺序的 精确 匹配。

在下面的例子中,查询匹配所有 favorites 字段是以该种顺序只包含 等于 "Picasso"``的 ``artist 和等于 "pizza" 的 food 字段的内嵌文档:

db.users.find( { favorites: { artist: "Picasso", food: "pizza" } } )

7、嵌入文档中字段上的等于匹配

在下面的例子中,查询使用 dot notation 匹配所有 favorites 字段是包含等于 "Picasso" 的字段 ``artist``(可能还包含其他字段) 的内嵌文档:

db.users.find( { "favorites.artist": "Picasso" } )

8、数组上的查询

采用一个参数: $elemMatch (该参数是值精确的数组)

下面的例子查询 finished 数组至少包含一个大于 ($gt) 15 并且小于 ($lt) 20 的元素的文档:

db.users.find( { finished: { $elemMatch: { $gt: 15, $lt: 20 } } } )

9、嵌入文档数组

使用数组索引匹配嵌入文档中的字段

在下面的例子中,查询使用 the dot notation 匹配所有 dadges 是第一个元素为”black” 的数组的文档:

db.users.find( { 'points.0.points': { $lte: 55 } } )

10、不指定数组索引匹配字段

如果你不知道文档在数组中的索引位置,用点号 (.) 将包含数组的字段的名字和内嵌文档的字段的名字连起来。

下面的例子选择出所有 points``数组中至少有一个嵌入文档包含值小于或等于 ``55 的字段 points 的文档:

db.users.find( { 'points.points': { $lte: 55 } } )

11、指定数组文档的多个查询条件

单个元素满足查询条件

使用 $elemMatch 操作符为数组元素指定复合条件,以查询数组中至少一个元素满足所有指定条件的文档。

下面的例子查询 points 数组有至少一个包含 points 小于等于 70 并且字段 bonus 等于 20 的内嵌文档的文档:

db.users.find( { points: { $elemMatch: { points: { $lte: 70 }, bonus: 20 } } }

12、元素组合满足查询条件

下面的例子查询了 points 数组包含了以某种组合满足查询条件的元素的文档;例如,一个元素满足 points 小于等于 70 的条件并且有另一个元素满足 bonus 等于 20 的条件,或者一个元素同时满足两个条件:

db.users.find( { "points.points": { $lte: 70 }, "points.bonus": 20 } )

接下来就是更新咯,老样子跟插入方法差不多,更新就可以看做是插入的一种。

来一段官方文档的话:

如果 db.collection.update() db.collection.updateOne() db.collection.updateMany() 或者 db.collection.replaceOne() 包含 upsert : true 并且 没有文档匹配指定的过滤器,那么此操作会创建一个新文档并插入它。如果有匹配的文档,那么此操作修改或替换匹配的单个或多个文档。

这个解释在我认为就是在没有该数据的时候就会创建相应的数据,毕竟它是插入的一种特殊方法。

1、db.collection.updateOne():修改单条数据

下面的例子对 users 集合使用 db.collection.updateOne() 方法来更新第一个 根据 过滤条件favorites.artist 等于 “Picasso” 匹配到的文档更新操作:

使用 $set 操作符更新 favorites.food 字段的值为 “pie” 并更新 type 字段的值为 3,

db.users.updateOne(
      { "favorites.artist": "Picasso" },
      {
        $set: { "favorites.food": "pie", type: 3 },
        
      }
      )

2、db.collection.update()的用法和db.collection.updateOne()类似,为了区别一下,我们采用了 { multi: true }这个参数,这样会在你修改之后的数据中有这个参数,表示修改完成。

db.users.update(
      { "favorites.artist": "Pisanello" },
      {
        $set: { "favorites.food": "pizza", type: 0, }
      },
      { multi: true }
      )

3、 db.collection.updateMany(),这个会不会认为是修改很多,当然可以这么理解,但是我更喜欢把他理解成修改多个参数。

下面这个举例就是为了大家看的明白采用了{ upsert: true },它可以清晰的返回你修改后的值

 db.inspectors.updateMany(
        { "Sector" : { $gt : 4 }, "inspector" : "R. Coltrane" },
        { $set: { "Patrolling" : false } },
        { upsert: true }
      );

4、修改还有一个就是文档替换db.collection.replaceOne
下面的例子对 users 集合使用 db.collection.replaceOne() 方法将通过过滤条件 name 等于 "sue" 匹配到的 **第一个** 文档替换为新文档:

db.users.replaceOne(
      { name: "abc" },
      { name: "amy", age: 34, type: 2, status: "P", favorites: { "artist": "Dali", food: "donuts" } }
      )

走着,撸删除了:

1、删除所有文档db.collection.remove()

这个方法就干脆了,就相当于sql中的删除表结构的delete()

db.users.remove({})

作为另一种选择如下例子使用 db.collection.remove() 从 users 集合中删除所有 status 字段等于 “A” 的文档:

db.users.remove( { status : "P" } )

2、仅删除一个满足条件的文档db.collection.deleteOne()

如下例子使用 db.collection.deleteOne() 删除 第一个 status 字段等于 “A” 的文档:

db.users.deleteOne( { status: "D" } )

3、删除集合中所有文档db.collection.deleteMany()

如下的例子使用 db.collection.deleteMany() 方法从 users 集合中删除了 所有 文档:

db.users.deleteMany({})

上述就是小编为大家分享的monGoDB中CRUD如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mongoDB中CRUD如何使用

本文链接: https://www.lsjlt.com/news/56474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • mongoDB中CRUD如何使用
    这期内容当中小编将会给大家带来有关mongoDB中CRUD如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.在存储上面,非关系型数据库可以更大规模的存储,打个比方...
    99+
    2022-10-18
  • 如何使用MongoDB开发一个简单的 CRUD API
    如何使用MongoDB开发一个简单的CRUD API在现代的Web应用程序开发中,CRUD(增删改查)操作是非常常见和重要的功能之一。在本文中,我们将介绍如何使用MongoDB数据库开发一个简单的CRUD API,并提供具体的代码示例。Mo...
    99+
    2023-10-22
    API MongoDB CRUD
  • 怎么在.NET中使用MongoDB以及基本的CRUD操作
    这篇文章主要介绍了怎么在.NET中使用MongoDB以及基本的CRUD操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MongoDBNoS...
    99+
    2022-10-18
  • MyBatisPlus中CRUD使用方法详解
    目录一、insert1.插入操作2.主键策略二、update1.根据Id更新操作2.自动填充3.乐观锁三、select1.根据id查询记录2.通过多个id批量查询3.简单的...
    99+
    2023-01-31
    MyBatisPlus CRUD MyBatis CRUD
  • MongoDB中regex如何使用
    MongoDB中regex如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Part1:写在最前使用MySQL或其他关系型...
    99+
    2022-10-18
  • MongoDB中GridFS如何使用
    今天就跟大家聊聊有关MongoDB中GridFS如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用GridFS简单介绍:列出文件:[root...
    99+
    2022-10-18
  • 如何在SQL Server中生成和使用CRUD存储过程
    大多数数据库系统基于4个最简单的数据操作操作,这些操作称为CRUD。该首字母缩写词代表创建、读取、更新和删除。在开发和管理数据库时,可以使用CRUD存储过程来执行所有与数据有关的任务。这种存储过程的好处是,...
    99+
    2022-10-18
  • 如何在mongodb中使用driver
    如何在mongodb中使用driver?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MongoDB 是一个基于分布式文件存储的数据库。由 ...
    99+
    2022-10-18
  • MongoDB中如何使用游标
    今天就跟大家聊聊有关MongoDB中如何使用游标,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、什么是游标?游标(Cursor)是处理数据的一种方...
    99+
    2022-10-18
  • MongoDB:在 Java 中使用 MongoDB
    除了通过启动 mongo 进程进如 Shell 环境访问数据库外,MongoDB 还提供了其他基于编程语言的访问数据库方法。MongoDB 官方提供了 Java 语言的驱动包,利用这些驱动包可使用...
    99+
    2023-09-14
    mongodb java 数据库
  • Python中如何使用mongodb模块
    这篇文章给大家介绍Python中如何使用mongodb模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。涉及到python和mongodb,那么安装相应的模块四必不可少的,最简单的安装...
    99+
    2022-10-18
  • MongoDB中limit和skip如何使用
    这期内容当中小编将会给大家带来有关MongoDB中limit和skip如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.limit()方法语法db.collect...
    99+
    2022-10-18
  • MongoDB 中如何使用Limit与Skip
    这篇文章给大家介绍MongoDB 中如何使用Limit与Skip,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MongoDB 中Limit与Skip的使用方法详解一 MongoDB L...
    99+
    2022-10-18
  • MongoDB中如何使用NoSQL语句
    今天就跟大家聊聊有关MongoDB中如何使用NoSQL语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。查看帮忙命令>hlep &n...
    99+
    2022-10-18
  • MongoDB中db.currentOp()方法如何使用
    这篇文章给大家介绍MongoDB中db.currentOp()方法如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。停止某个操作:$ mongo --port 17380 ...
    99+
    2022-10-18
  • Node.js中如何使用SQLite3和MongoDB
    Node.js中如何使用SQLite3和MongoDB,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。setup.js:初始化数据库var&...
    99+
    2022-10-19
  • PHP中如何使用MongoDB技术?
    PHP中如何使用MongoDB技术?MongoDB是当今市场上流行的一种非关系型数据库。它以其良好的可扩展性、高性能、灵活的文档模型和强大的查询语言而受到越来越多的PHP开发者的青睐。本文将探讨在PHP项目中如何使用MongoDB技术。一、...
    99+
    2023-05-14
    技术 PHP MongoDB
  • 如何在mongodb中使用golang驱动
    如何在mongodb中使用golang驱动?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用教程如下:导入go get g...
    99+
    2022-10-18
  • MongoDB中如何使用复合索引
    本篇文章给大家分享的是有关MongoDB中如何使用复合索引,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是复合索引?复合索引,即Compo...
    99+
    2022-10-18
  • MongoDB中如何使用唯一索引
    这篇文章将为大家详细讲解有关MongoDB中如何使用唯一索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们用的是MongoDB数据存储用户信息,用户表中...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作