50.MongoDB快速入门实战

这篇具有很好参考价值的文章主要介绍了50.MongoDB快速入门实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MongoDB概念

MongoDB是一个文档数据库(以 JSON 为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务)。

MongoDB vs 关系型数据库

SQL MongoDB
数据库(database) 数据库(database)
表(table) 集合(collection)
行(row) 文档(document)
列(column) 字段(field)
索引(index) 索引(index)
主键(primary key) _id
视图(view) 视图(view)
表连接(tablejoin) 聚合操作($lookup)

MongoDB环境搭建


#启动命令
mongod -f /data/mongodb/conf/mongo.conf --auth
#关闭服务
mongod --port=27017 --dbpath=/data/mongodb/data --shutdown 

#客户端
mongosh
#进入 mongosh 后
use admin
db.shutdownServer()

MongoDB命令操作

#==============  数据库操作 ==============
#查看所有库
show dbs
# 切换到指定数据库,不存在则创建
use test
# 删除当前数据库  
db.dropDatabase()

#==============  集合操作 ==============
#查看集合
show collections
#创建集合
db.createCollection("emp")
#删除集合
db.emp.drop()

#==============  用户管理 ==============
# 设置管理员用户名密码需要切换到admin库
use admin  
#创建管理员
db.createUser({user:"lyw",pwd:"123456",roles:["root"]})
# 查看当前数据库所有用户信息 
show users 
#显示可设置权限
show roles 
#显示所有用户
db.system.users.find()
#删除指定用户
db.dropUser("lyw")
#删除当前数据库所有用户
 db.dropAllUser()
 
#==============  权限管理 ==============
db.grantRolesToUser( "lyw" , [ 
     { role: "clusterAdmin", db: "admin" } ,
     { role: "userAdminAnyDatabase", db: "admin"},
     { role: "readWriteAnyDatabase", db: "admin"} 
 ])

#==============  执行js脚本导入数据 ==============
load("books.js")

#==============  文档操作 ==============

#保证数据不丢失 设置 writeConcern 参数的示例
#- w:指定写入确认级别。如果指定为数字,则表示要等待写入操作完成的节点数。如果指定为 majority,则表示等待大多数节点完成写入操作。默认为 1,表示等待写入操作完成的节点数为 1。
#- j:表示写入操作是否要求持久化到磁盘。如果设置为 true,则表示写入操作必须持久化到磁盘后才返回成功。如果设置为 false,则表示写入操作可能在数据被持久化到磁盘之前返回成功。默认为 false。
#- wtimeout:表示等待写入操作完成的超时时间,单位为毫秒。如果超过指定的时间仍然没有返回确认信息,则返回错误。默认为 0,表示不设置超时时间。
db.emps.insertOne(
   { name: "fox", age: 35},
   {
      writeConcern: { w: "majority", j: true, wtimeout: 5000 }
   }
)

#批量新增文档
db.emps.insertMany([
   { name: "xiaming", age: 18},
   { name: "xiaming", age: 18},
   { name: "xiaming", age: 18},
   { name: "xiaming", age: 18},
   { name: "xiaming", age: 18},
   { name: "wangwu", age: 80},
   { name: "wangwu", age: 80, area:["beijing","shanghai"]}],
   {
      writeConcern: { w: "majority", j: true, wtimeout: 5000 }
   }
)

#查询集合中的第一个文档
db.emps.findOne({_id:ObjectId("653a730e3c8a14a69c559e6b")})
db.emps.findOne({age:{$gt:60}})
#查询age大于60的文档
db.emps.find({age:{$gt:60}})
db.emps.find({age:{$gt:60},area:{$in:["beijing"]}})

#更新文档
db.emps.updateOne({_id:ObjectId("653a730e3c8a14a69c559e6b")},{$inc:{age:1}})
db.emps.updateMany({name:"xiaming"},{$set:{age:10}})

#findAndModify兼容了查询和修改指定文档的功能
db.emps.findAndModify({
    query:{_id:ObjectId("653a730e3c8a14a69c559e6b")},
    update:{name:"jiutian"},
    new: true
})

#删除文档
db.emps.deleteOne ({ name:"jiutian" })
#删除集合下全部文档
db.emps.deleteMany ({})  


#==============  批量操作 bulkwrite() ==============
#- insertOne - updateOne - updateMany - replaceOne - deleteOne - deleteMany
db.emps.bulkWrite( [
      { insertOne: { document: { _id: 3, type: "beef", size: "medium", price: 6 } } },
      { insertOne: { document: { _id: 4, type: "sausage", size: "large", price: 10 } } },
      { updateOne: {
         filter: { type: "cheese" },
         update: { $set: { price: 8 } }
      } },
      { deleteOne: { filter: { type: "pepperoni"} } },
      { replaceOne: {
         filter: { type: "vegan" },
         replacement: { type: "tofu", size: "small", price: 4 }
      } }
   ] )


处理分页问题 – 巧分页

应该避免使用skip/limit形式的分页。使用查询条件+唯一排序条件

固定(封顶)集合

保证数据库只会存储“限额”的数据,超过该限额的旧数据都会被丢弃。

#创建固定集合
db.createCollection("logs",{capped:true,size:4096,max:10})

#查看文档的占用空间
db.logs.stats()

适用场景

  • 系统日志,这非常符合固定集合的特征,而日志系统通常也只需要一个固定的空间来存放日志。在MongoDB内部,副本集的同步日志(oplog)就使用了固定集合。

  • 存储少量文档,如最新发布的TopN条文章信息。得益于内部缓存的作用,对于这种少量文档的查询是非常高效的。文章来源地址https://www.toymoban.com/news/detail-735303.html

到了这里,关于50.MongoDB快速入门实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MongoDB快速入门

    虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的NoSQL数据库还是很有必要的。MongoDB是一个功能丰富的NoSQL数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。 MongoDB是一个基于分布式文件

    2024年02月15日
    浏览(49)
  • 〖Python 数据库开发实战 - MongoDB篇⑯〗- MongoDB创建索引时的一些实用的重要选项参数

    订阅 Python全栈白宝书-零基础入门篇 可报销! 白嫖入口-请点击我。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏, 免费阶段订阅数量4300+ , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:加入社区的小伙

    2024年02月02日
    浏览(61)
  • Python私教MongoDB快速入门教程

    拉取镜像: 创建容器: 设置用户名和密码: 校验用户名和密码: 创建数据库: 查看所有数据库: 插入一条数据,再查看所有数据库: 删除数据库: 集合相当于一张表,创建一张user集合: 查看所有的集合: 创建固定集合 mycol,整个集合空间大小 6142800 B, 文档最大个数为

    2024年01月22日
    浏览(40)
  • MongoDB数据库从入门到精通系列文章之:MongoDB数据库百篇技术文章汇总

    MongoDB数据库系列文章持续更新中: 更多数据库内容请阅读博主数据库专栏,数据库专栏涵盖了Mysql、SQLServer、PostgreSQL、MongoDB、Oracle、Cassandra等数据库 数据库专栏 文章名称 文章链接 数据库安装部署系列之:部署Mongodb5.0.6高可用集群详细步骤 数据库安装部署系列之:部署M

    2024年02月11日
    浏览(54)
  • 数据库操作入门:PyMongo 和 MongoDB 的基本用法

    MongoDB是一种流行的NoSQL数据库,它将数据存储在类似JSON的文档中,使数据库非常灵活和可扩展 Python需要一个MongoDB驱动程序来访问MongoDB数据库。在本教程中,我们将使用MongoDB驱动程序 \\\"PyMongo\\\"。建议使用PIP来安装 \\\"PyMongo\\\",确保您的Python环境已安装PIP。 在命令行中导航到PIP的

    2024年02月05日
    浏览(67)
  • 【DBA课程-笔记】第1章:MongoDB数据库入门

    目录 一、MongoDB 概览及新特性 1. MongoDB 简介 2. MongoDB 数据库的优点 3. MongoDB 的典型行业案例 4. SQL 与 MongoDB 对应术语 5. MongoDB 历史版本特性 6. MongoDB 4.0特点  7. MongoDB 数据库体系架构  8. MongoDB 主从复制架构 9. MongoDB 分片集群架构  10. 云数据库MongoDB架构(阿里云) 二、

    2024年02月12日
    浏览(93)
  • 【小沐学数据库】MongoDB下载、安装和入门(Python)

    MongoDB是一个文档数据库,旨在简化应用程序 开发和扩展。 官网地址: https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关

    2024年02月03日
    浏览(43)
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-系统数据集合设计

    前几章教程我们把ToDoList系统的基本框架搭建好了,现在我们需要根据我们的需求把ToDoList系统所需要的系统集合(相当于关系型数据库中的数据库表)。接下来我们先简单概述一下这个系统主要需要实现的功能以及实现这些功能我们需要设计那些数据库集合。 MongoDB从入门到

    2024年02月21日
    浏览(38)
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

    Swagger是一个规范且完整API文档管理框架,可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确

    2024年02月21日
    浏览(40)
  • MongoDB——MongoDB删除系统自带的local数据库

    1.1、linux环境进入mongo客户端 输入 mongo 命令,进入命令行客户端 进入admin库,并登录,查看所有数据库 提升用户权限,然后进入local库并删除local库 然后重新进入admin库,把提升的用户权限降回,再次查看所有数据库 由上图可知,local库已被删除。

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包