MongoDB的基本用法

  MongoDB已在Ubuntu中安装成功,为便于后续在ASP.NET Core中使用MongoDB,需要学习MongoDB的基本概念及用法。

设置MongoDB服务开机自动启动

  重启Ubuntu后,安装的MongoDB服务不会自动启用,为便于程序连接数据库并进行操作,最好设置MongoDB服务开机自动启动。使用下列命令设置开机自动启动(该命令需要root权限)。

 systemctl enable mongodb.service
基本操作说明

  在etc目录下存在mongod.conf文件,其中指定了MongoDB数据库文件的存放位置。
在这里插入图片描述

  MongoDB数据库使用“use DATABASE_NAME”命令切换数据库,如果数据库不存在,则会创建数据库。例如创建一个存储chart.js图形数据的数据库ChartData,命令及效果如下所示
在这里插入图片描述
  接下来创建存储气泡图数据的集合,MongoDB中的集合对应着关系型数据库中的表,表中存储了很多条记录,而在集合中则存储有很多文档(BSON文档,详见参考文献2)。有两种方式创建集合,第一种是使用db.createCollection(name)的方式创建,第二种是调用db.collection.insertOne() 或db.collection.insertMany()时,如果集合不存在,则自动创建集合。这两种方式的命令及效果如下图所示:
在这里插入图片描述在这里插入图片描述
  上面图形中,使用show collections显示当前数据库中的所有集合,使用db.collection.find().pretty()查看集合中的所有数据。
  使用insertOne命令一次只能向集合中插入一个文档,可以使用insertMany同时插入多个文档,其使用示意如下图所示:
在这里插入图片描述

  MongoDB使用db.collections.drop()来删除集合,其使用示意如下图所示:
在这里插入图片描述
  MongoDB使用下列命令删除集合中的一个或多个文档。

    db.collection.deleteMany()
    db.collection.deleteOne()

  deleteOne命令删除集合中满足条件的第一个文档。
在这里插入图片描述  而deleteMany命令删除集合中满足条件的所有文档。如果deleteMany命令不带参数,则删除集合中的所有文档,
在这里插入图片描述

  MongoDB使用下列命令修改集合中的一个或多个文档。

db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)

  updateOne命令将集合中满足条件的第一个文档的相应属性修改为指定的内容,如下图所示。updateMany命令将集合中满足条件的所有文档的相应属性修改为指定的内容,在此就不在赘述。特别说明的是,update参数中需要中$set指定修改后的属性的值,如下图所示。
在这里插入图片描述

  MongoDB使用db.collection.find()命令查询集合中符合条件的文档(pretty() 方法以格式化的方式来显示所有文档),如果没有参数,则返回集合中的所有文档。
在这里插入图片描述

  本文介绍了MongoDB中最基本的一些操作,对MongoDB有了初步的认识,后续还会继续学习MongoDB数据库的使用。

参考文献:
[1]https://docs.mongodb.com/manual/crud/
[2]https://docs.mongodb.com/manual/core/document/#std-label-bson-document-format
[3]https://docs.mongodb.com/manual/core/databases-and-collections/#std-label-collections
[4https://blog.csdn.net/qq_36027670/article/details/79994202
[5]https://blog.csdn.net/qq_33036599/article/details/83061446
[6]https://www.runoob.com/mongodb/mongodb-create-database.html
[7]https://blog.csdn.net/lipei_csdn/article/details/81805400?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL。在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说,更加直观,容易理解和掌握。Schema-less,支持嵌入子文档:MongoDB是一个Schema-free的文档数据库。一个数据库可以有多个Collection,每个Collection是Documents的集合。Collection和Document和传统数据库的Table和Row并不对等。无需事先定义Collection,随时可以创建。Collection中可以包含具有不同schema的文档记录。 这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embed document)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。图1 MongoDB是一个Schema-free的文档数据库图2是一个例子,作品和评论可以设计为一个collection,评论作为子文档内嵌在art的comments属性中,评论的回复则作为comment子文档的子文档内嵌于replies属性。按照这种设计模式,只需要按照作品id检索一次,即可获得所有相关的信息了。在MongoDB中,不强调一定对数据进行Normalize ,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB的文档模型可以让我们很轻松就能将自己的Object映射到collection中实现存储。图2 MongoDB支持嵌入子文档简单易用的查询方式:MongoDB中的查询让人很舒适,没有SQL难记的语法,直接使用JSON,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,MongoDB支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的SQL查询。CRUD更加简单,支持in-place update:只要定义一个数组,然后传递给MongoDB的insert/update方法就可自动插入或更新;对于更新模式,MongoDB支持一个upsert选项,即:“如果记录存在那么更新,否则插入”。MongoDB的update方法还支持Modifier,通过Modifier可实现在服务端即时更新,省去客户端和服务端的通讯。这些modifer可以让MongoDB具有和Redis、Memcached等KV类似的功能:较之MySQL,MonoDB更加简单快速。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值