Node.js浅谈之MongoDB


一、MongoDB/Robo3T安装

MongoDB安装

  • 中文网地址:https://www.mongodb.org.cn/
  • MongoDB安装 下载.msi文件 安装时,取消勾选“MongoDB Compass”,它是MongoDB官方的图形化工具,无须安装。
  • 配置环境变量 系统设置->环境变量->添加PATH:D:\mongo\bin
  • 启动mongodb服务 mongod --dbpath “D:\mongo\data”
  • 使用 mongo shell 连接mongodb服务 连接服务:mongo 查看数据库列表:show dbs;
  • 启动后默认端口是27017

Robo3T安装

  • Robo3T
  • adminMongo 以Robo3T为例,使用步骤如下: 官网下载 robo3t-1.3.1-windows-x86_64-7419c406.exe 点击安装 填写相关信息,启动 Robo3T GitBash启动 MongoDB服务 在Robo3T中创建连接、完成
  • 使用Robo3T
    1.连接本地MongoDB服务
    2.查看集合,切换三种显示方式——json视图、表格视图、对象视图
    3.使用Robo3T Shell:输入mongo shell命令,点击“执行”按钮

二、MongoDB vs. MySQL 及其概念讲解

MongoDB是一个基于分布式文件存储的数据库,由C++编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
特点:高性能、易部署、易使用、存储数据非常方便。是一种非关系型数据库,而mysql则是关系型数据库

  • 相关术语:
    database 数据库
    collection 集合
    document 文档
    field 域
    index 索引
    primary_key 自动地使用_id字段作为主键

  • 文档:即键值对(BSON,二进制的JSON),文档中不需要设置对等的字段,并且相同字段的值可以是不同的数据类型,这是与关系型数据库有很大的区别。
    示例:{"_id": ObjectId{“s232323232”}, name: geekxia, age: 20}

  • 集合:集合是文档的组,集合存在于数据库中,集合中没有固定的数据结构。但同一个集合中的文档通常有一定的关联性。

  • MongoDB的数据类型:
    String
    Integer
    Boolean
    Double
    Min/Max keys
    Array
    Timestamp
    Object
    Null
    Symbol
    Date
    Object ID
    Binary Data
    Code
    Regular expression

三、使用 mongo shell,常用命令

1、帮助命令
	help
	db.help()
	db.test.help()
	db.test.find().help()
2、数据库操作命令
	show dbs
	use dbname  切换数据库
	db / db.getName()  查看当前数据库名称
	db.stats()  显示当前DB的状态
	db.version()  查看当前DB的版本
	db.getMongo()  查看当前DB的连接的主机地址
	db.dropDatabase()  删除当前DB

3、创建数据库和集合
	use project  不存在就创建,存在就切换至
	db.createCollection('user')  // 创建user集合
	db.createCollection('music', {size:20,capped:true,max:100})  创建固定容量的集合
	show dbs
	show collections / db.getCollectionNames()
	db.user.isCapped()  判断集合是否为定容量
	db.getCollection('music')  获取指定集合
	db.printCollectionStats()  打印指定集合的状态

4、集合中的文档操作:
	db.user.insertOne({})  向集合中插入文档
	db.user.insertMany([{},{}])
	db.user.save({})

	db.user.updateOne({"name":"geekxia"}, {$set:{"age":100}})
	db.user.updateMany({},{$set:{}})

	db.user.deleteOne({"name":"jiaming"})
	db.user.deleteMany()
	db.user.remove({})   // 要指出删除的条件

	db.user.find()

5、文档操作的综合示例
	db.user.findAndModify({
		query: {age: {$gte: 25}},
		sort: {age: -1},
		update: {$set:{name:'a'},$inc:{age:2}},
		remove: true
	});
	等价于下面这个命令:
	db.runCommand({
		findandmodify: 'user',
		query: {age: {$gte: 25}},
		sort: {age: -1},
		update: {$set:{name:'a'},$inc:{age:2}},
		remove: true
	});

6、聚集集合查询
	db.user.find()     查询所有记录
	db.user.distinct('name')    以name字段去重查询
	db.user.find({age:22})     查询age=22的记录
	db.user.find({age:{$gt: 22}})   查询age>22的记录
	db.user.find({age:{$lt: 22}})   查询age<22的记录
	db.user.find({age:{$gte: 22}})   查询age>=22的记录
	db.user.find({age:{$lte: 22}})   查询age<=22的记录
	db.user.find({age:{$gte:20, $lte:30}})  查询age>=20 && age<=30的记录
	db.user.find({name:/geek/})  查询name中包含'geek'的记录
	db.user.find({name:/^geek/})  查询name以'geek'开头的记录
	db.user.find({},{name:1,age:1})  查询所有记录,只返回name和age字段(1-显示 0-不显示)
	db.user.find({age:{$gt:20}},{name:1,age:1})  查询age>20的记录,只返回name和age字段
	db.user.find().sort({age:1})  按age进行升序排列
	db.user.find().sort({age:-1})  按age进行降序排列
	db.user.find({},{name:1,age:1,_id:0}).sort({age:1})
	db.user.find({name:'geek',age:22})  查询name='geek' && age=22的记录
	db.user.find().limit(5)  只查询前5条记录
	db.user.find().skip(10)  查询10条以后的所有数据
	db.user.find().skip(5).limit(5)  查询第6~10条记录
	db.user.find({$or:[{age:20},{age:25}]})  查询age=20或者age=25的记录
	db.user.findOne()  查询满足条件的第一条记录
	db.user.find({age:{$gte:25}}).count()  查询满足条件的记录的总条数
	db.user.find({grade:{$exists:true}})  查询含有grade字段的记录
	db.user.find({sex:{$exists:true}}).count()  查询存在sex字段的记录的总条数

7、实战mongo shell
	构造一批假数据,使用insertMany()入库
	然后就可以使用上述命令进行实战练习了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值