资讯专栏INFORMATION COLUMN

MongoDB 入门

Tecode / 2045人阅读

摘要:入门相对于的优势模式少是一个文档数据库,其中一个集合包含不同的文档。一个文档之间的字段数,内容和文档大小可能会有所不同。深入的查询能力。优化易于扩展不需要将应用程序对象转换映射到数据库对象。

MongoDB 入门

MongoDB相对于RDBMS的优势

  1. 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档。一个文档之间的字段数,内容和文档大小可能会有所不同。
  2. 单个对象的结构清晰。
  3. 没有复杂的联接。
  4. 深入的查询能力。MongoDB支持使用与SQL几乎一样强大的基于文档的查询语言对文档进行动态查询。
  5. sql Tuning(优化)
  6. 易于扩展
  7. 不需要将应用程序对象转换/映射到数据库对象。
  8. 使用内部存储器存储(窗口式)工作集,从而可以更快地访问数据

为什么要使用MongoDB

  • 面向文档的存储,BSON格式存储,即Binary JSON
  • 单键索引、复合索引、多键索引、地理空间索引、全文本索引和哈希索引
  • MongoDB实现高可用 主从复制
  • 自动分片 auto sharding
  • 丰富的查询
  • 快速原地更新(fast in-place updates):大部分更新操作无需申请新空间
  • MongoDB的专业支持map/reduce支持
  • Gridfs:各种size大小的集群文件支持

快速启动 MongoDB

新建 docker-compose.yml 文件。

</>复制代码

  1. version: 0.2.3
  2. services:
  3. mongodb:
  4. image: mongo:4.2.6
  5. container_name: mongo_db
  6. environment:
  7. - MONGO_INITDB_DATABASE=mongo # 数据库名称
  8. - MONGO_INITDB_ROOT_USERNAME=user # 管理员名称
  9. - MONGO_INITDB_ROOT_PASSWORD=passwd # 管理员密码
  10. volumes:
  11. - ./mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
  12. - ./mongo/mongo-volume:/data/db
  13. ports:
  14. - "27017-27019:27017-27019"
  15. restart: always

新建 init-mongo.js 文件。

</>复制代码

  1. db.getSiblingDB(admin)
  2. .createUser({
  3. user: user,
  4. pwd: passwd,
  5. roles: [readWrite]
  6. });

然后执行命令

</>复制代码

  1. Copydocker-compose up -d

使用操作

插入数据

</>复制代码

  1. // 插入集合名称为products的集合并插入数据 (不存在集合会新建)
  2. db.products.insertOne({
  3. item: "card",
  4. qty: 15
  5. });
  6. // 批量插入数据
  7. db.products.insertMany([{
  8. item: "card1",
  9. qty: 16
  10. }, {
  11. item: "card2",
  12. qty: 17
  13. }, {
  14. item: "envelope",
  15. qty: 20
  16. }, {
  17. item: "stamps",
  18. qty: 30
  19. }]);

查询数据

</>复制代码

  1. db.products.find({ qty: 15 }).limit(1)

修改数据

</>复制代码

  1. db.products.find({
  2. item: "stamps"
  3. }).limit(1);
  4. // 找到item为stamps的并修改其qty为60
  5. db.products.updateOne(
  6. {
  7. "item": "stamps"
  8. },
  9. {
  10. $set: {
  11. "qty": 60
  12. }
  13. }
  14. );
  15. db.products.find({
  16. item: "stamps"
  17. }).limit(1);

</>复制代码

  1. // 把qty大于15的统统修改为15
  2. db.products.updateMany(
  3. {
  4. qty: {
  5. $gt: 15
  6. }
  7. },
  8. {
  9. $set: {
  10. "qty": 15
  11. }
  12. }
  13. );

</>复制代码

  1. // 把集合products中item为stamps 整个替换掉
  2. db.products.replaceOne(
  3. { "item" : "stamps" },
  4. { "item" : "stampss", "Borough" : "Manhattan" }
  5. );

删除数据

</>复制代码

  1. // 删除item为stampss的
  2. db.products.deleteOne( { "item" : "stampss" } );
  3. // 批量删除qty小于15的
  4. db.products.deleteMany( { "qty" : {$lt: 15} } );

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125935.html

相关文章

  • MongoDB最简单的入门教程之五-通过Restful API访问MongoDB

    摘要:通过前面四篇的学习,我们已经在本地安装了一个数据库,并且通过一个简单的应用的单元测试,插入了几条记录到中,并通过查看到了插入的数据。读操作最终将会使用我们在最简单的入门教程之三使用代码往里插入数据里介绍的方法,即通过注入的实例完成对的操作。 通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到Mong...

    xeblog 评论0 收藏0
  • MongoDB最简单的入门教程之五-通过Restful API访问MongoDB

    摘要:通过前面四篇的学习,我们已经在本地安装了一个数据库,并且通过一个简单的应用的单元测试,插入了几条记录到中,并通过查看到了插入的数据。读操作最终将会使用我们在最简单的入门教程之三使用代码往里插入数据里介绍的方法,即通过注入的实例完成对的操作。 通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到Mong...

    xiaolinbang 评论0 收藏0
  • MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    摘要:前两篇教程我们介绍了如何搭建的本地环境最简单的入门教程之一环境搭建以及如何用读取里的记录最简单的入门教程之二使用访问这篇教程我们会介绍如何使用代码来连接。代码如下和教程二相比,上述代码的方法里还展示了如何用代码给数据库里增加记录。 前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: M...

    Kylin_Mountain 评论0 收藏0
  • MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    摘要:前两篇教程我们介绍了如何搭建的本地环境最简单的入门教程之一环境搭建以及如何用读取里的记录最简单的入门教程之二使用访问这篇教程我们会介绍如何使用代码来连接。代码如下和教程二相比,上述代码的方法里还展示了如何用代码给数据库里增加记录。 前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: M...

    Hegel_Gu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<