mongoDB 简介

news/2024/9/25 16:59:03

参考文档       

   https://www.runoob.com/mongodb/mongodb-tutorial.html  mongoDB 菜鸟教程
   https://mongodb.net.cn/manual/  mongoDB 中文官网

 

1. mongoDB 概述

MongoDB 是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得数据存储变得非常灵活。
MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

 

注释:关系型数据库 与 非关系型数据库 的区别,如下:

 

2. mongoDB 的相关概念与术语

SQL与 MongoDB 的区别 

 注释:其他术语详见菜鸟教程 https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

 

3. 安装 mongoDB 

  下载绿色版:http://www.winwin7.com/soft/10457.html

  

  注释:将绿色版的软件包,解压到目录:D:\0_software\mongoDB\install

解压包的根目录如下:

bin目录如下:

 

  

4. 启动 mongod 服务 与 mongo 客户端 (windows系统下)

  (1)启动 mongod 服务: 在 bin 目录下执行如下指令  mongod -- dbpath [存放数据库的地址]

   (2)启动 mongo 客户端:在 bin 目录下执行如下指令  mongo  node.js 操作 mongoDB 时,无需启动客户端)

     之后,就可以在 mongo 客户端执行指令,操作 mongoDB 数据库了!

 

5. mongoDB 的可视化工具

  虽然可以在mongo客户端直接执行指令操作数据库,但是,也有可视化工具进行直观的操作与查看。

  常用的 mongoDB 可视化工具有:Robomongo、 Robo3T、adminMongo

 

6. mongoDB 的常见指令

注意:以下指令都是基于mongo客户端中执行的!(node.js中操作数据库的指令参考 mongoose 网站

  (1)MongoDB 的一些基本指令

help   提示一些基础指令(help/show/find)
    db.help()
    db.mycoll.help()
    db.mycoll.find().help()


    db.stats()      显示当前DB状态
    db.version()     查看当前DB版本
    db.getMongo()     查看当前DB的链接机器地址
    db.getPrevError()     查看之前的错误信息
    db.resetError()       清楚之前的错误信息

 

  (2)数据库 database 的操作指令
    show dbs           查询所有数据库
    db / db.getName()        查看当前的数据库(无需参数)
    use <db_name>        创建/切换数据库
    db.dropDatabase()       删除当前数据库(无需参数)
    db.copyDatabase("form_db_name", "to_db_name")   复制当前的 from_db_name 数据库到 to_db_name 数据库中(mongoDB不支持重命名数据库,但可以新建数据库后复制数据)
    

    注意:创建空数据库之后,show dbs不能查询出该空数据库,得在该空数据库中创建数据表了才行。(database--collection/table--document/row--field/column)
    

   (3)数据表 collection 的操作指令

show collections          查询当前数据库下的所有的数据表
    db.getCollectionNames()       查询当前数据库下的所有的数据表
    db.getCollection("collName")      查询当前数据库下的指定名称的数据表

    db.createCollection("collName", {size: 20, capped: 5, max: 100})    创建数据表(第二个参数可选,capped表示集合有大小上限,size是字节单位,max是最大文档数)
    db.collName.drop()                        删除数据表
    db.collName.renameCollection("collName2")            重命名数据表    

    db.collName.getDB()          查询指定数据表的所在数据库名称
    db.collName.stats()            得到当前数据表的状态
    db.collName.count()           查询数据表的数据条数
    db.collName.dataSize()         查看数据表的数据空间大小
    db.collName.totalSize()         得到当前数据表的总大小
    db.collName.storageSize()       得到当前数据表的储存空间大小

 

  (4)数据文档/行 document 的操作指令

       db.collName.save({name: "zhangsan", age: 25 })   添加(参数可以是 对象或数组)

    db.collName.remove({ })       删除所有记录
    db.collName.remove({age: 12})    删除

    db.collName.update({age: 25}, {$set: {name: "changeName"}}, false, true)         修改【$set - -赋值】
    db.collName.update({name: ‘Lisi’}, {$inc: {age: 50}}, false, true)                修改【$inc -- 增加】
    db.collName.update({name: ‘Lisi’}, {$inc: {age: 50}, $set: {name: "hoho"}}, false, true)     修改【$set - -赋值,$inc -- 增加】

    db.collName.find()          查询所有记录
    db.collName.findOne()         查询第一条(相当于:db.userInfo.find().limit(1) )

    db.collName.find({“age”: 22})       查询记录-equal条件筛选
    db.collName.find({ name: 'raykaeso', age: 22})    查询记录-and条件筛选
    db.collName.find({$or: [{age: 22}, {age: 25}]})      查询记录-逻辑操作符条件筛选(逻辑操作符:$or、$and、$not)
    db.collName.find({ age: {$gt: 22} })          查询记录-比较操作符条件筛选(比较操作符:$gt、$gte、$lt、$lte、$eq、$ne)
    db.collName.find({ age: {$gte: 25 }}).count()      查询记录-匹配符条件筛选-记录条数
    db.collName.find({ name: /^A/ })           查询记录-regexp条件筛选

db.collName.find({name: /mongo/})     模糊查询(相当于%%)
    db.collName.distinct("name")         去重查询

    db.collName.find().sort({age: 1})        查询记录-排序(升序)
    db.collName.find().sort({age: -1})       查询记录-排序(降序)
    db.collName.find().limit(5)           查询记录-限制返回的记录条数
    db.collName.find().skip(10)         查询记录-跳过n条数数据
    db.collName.find().limit(10).skip(5)      查询记录-限制&跳过

    db.collName.find({}, {name: 1, age: 1})         查询-返回指定字段
    db.collName.find({age: {$gt: 25}}, {name: 1, age: 1})   查询-返回指定字段 

    组合处理:查询、排序、修改、删除
    db.collName.findAndModify({
      query: {age: {$gte: 25}},
      sort: {age: -1},
      update: {$set: {name: ‘a2′}, $inc: {age: 2}},
      remove: true
    })

 

 

7. node.js 与 mongoDB 的  交互

详见下一节 “node/expressjs 连接与操作 MongoDB”

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何部署北斗定位应用,基于国产自主架构LS2K1000LA-i处理器平台

北斗卫星导航系统(以下简称北斗系统)是着眼于国内经济社会发展需要,自主建设、独立运行的卫星导航系统。经过多年发展,北斗系统已成为面向全球用户提供全天候、全天时、高精度定位、导航与授时服务的重要新型基础设施。图 1 北斗定位系统的应用优势 强可控:北斗系统是国内…

ChatGPT 向更多用户推出高级语音模式:支持 50 种语言;字节发布两款新视频生成大模型丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

题解:CF573D Bear and Cavalry

CF因为这是远古题目,所以根据现在的评测机速度,用 \(O(nq)\) 的做法也是可以过的。 也就是说,我们可以每次操作直接修改对应位置上的数字,然后设计一种 \(O(n)\) 的算法求解答案。 这道题类似资源分配型动态规划,所以我们可以设 \(dp_i\) 表示分配前 \(i\) 个人的答案。 直…

题解:AT_abc204_e [ABC204E] Rush Hour 2

LG变形的 dijkstra。 先思考什么情况下需要等待以及等待多长时间最优。我们把题目上的计算方法按照当前的时间 \(t\) 和通过所需的时间 \(f(t)\) 列个函数关系: \[f(t)=t+c+\lfloor \frac{d}{t+1}\rfloor \]然后用 Desmos 画个图可以得到图像(其实就是对勾函数):因为 \(c,d…

Rust字符串类型全解析

字符串是每种编程语言都绕不开的类型, 不过,在Rust中,你会看到远比其他语言更加丰富多样的字符串类型。 如下图:为什么Rust中需要这么多种表示字符串的类型呢? 初学Rust时,可能无法理解为什么要这样设计?为什么要给使用字符串带来这么多不必要的复杂性? 其实,Rust中对…

AI自动生成代码注释

在vscode 中安装 TONGYI Lingma

通过 Tampermonkey 实现学习通全自动刷课

本文介绍了如何使用 Tampermonkey 这一流行的用户脚本管理器,通过其脚本库实现学习通的全自动刷课。文章详细讲解了 Tampermonkey 的安装步骤、OCS 脚本的配置方法,以及题库的使用流程,帮助读者高效完成学习任务。在学习过程中,自动化工具能大大提升学习效率。Tampermonkey…