Mongo 介绍和使用

一、介绍


MongoBD 由 C++ 编写的,基于分布式文件存储的开源数据库系统,旨在提供可扩展的高性能的数据存储解决方案。


MongoDB 负载量的增加(需要更多的存储空间和更强的处理能力)可以通过添加分片保证服务器的性能。


MongoDB 支持丰富的查询表达式,查询指令使用 JSON 形式的格式。


MongoDB 允许在服务端使用 JavaScript 编写函数,直接执行脚本。可以把函数的定义存储在服务端,调用执行。




二、概念


数据库

一个 MongoDB 可以创建多个数据库。默认数据库为 db,该数据库存储在 data 目录中。

MongoDB 可以容纳多个单独的数据库实例,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件夹。


集合

集合就是文档组,集合存在于数据库中,没有特定的结构,


文档

文档是一个键值对(key-values)即一个 BSON,集合中的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型

文档中的 键值对(key-values)是有序的

文档中的键不允许重复

文档中的值包含多种数据类型,例如:字符串、整型、数组、文档型

文档区分大小写




三、使用


=========================================================	
	
显示所有数据库

show dbs

---------------------------------------------------------

切换数据库(选中数据库)

use 数据库

---------------------------------------------------------

显示所有集合

show collections

---------------------------------------------------------

创建集合

db.createCollection("集合名")

---------------------------------------------------------

查询

# 查询指定集合所有数据
db.集合名.find()

# and 条件查询
db.集合名.find({name:"yangfan"})

# or 条件查询
db.集合名.find({$or:[{age:15},{age:18}]})

# and 和 or 同时使用
db.集合名.find({$or:[{name:"yangfan",age:15},{name:"yangfan",age:18}]})

# 大于
db.集合名.find({age:{$gt:16}})

# 小于
db.集合名.find({age:{$lt:16}})

# 大于等于
db.集合名.find({age:{$gte:16}})

# 小于等于
db.集合名.find({age:{$lte:16}})

# 不等于
db.集合名.find({age:{$ne:16}})

# 查询 3 条记录
db.集合名.find().limit(3)

# 跳过 3 条记录(从第 4 条开始)
db.集合名.find().skip(3)

# 排序(注意:1 正序、-1 倒序)
db.集合名.find().sort({age:-1})

---------------------------------------------------------

聚合函数

# 计数
db.集合名.count()

# 条件计数
db.集合名.count({age:18})

# 平均数(注意:_id : "分组字段")
db.集合名.aggregate({$group:{_id:"$name",avg:{$avg:"$age"}}})

# 求和
db.集合名.aggregate({$group:{_id:"$name",avg:{$sum:"$age"}}})

# 最大数
db.集合名.aggregate({$group:{_id:"$name",avg:{$max:"$age"}}})

# 最小数
db.集合名.aggregate({$group:{_id:"$name",avg:{$min:"$age"}}})

---------------------------------------------------------

添加

# 添加
db.集合名.insert({name:"yangfan",age:16})
db.集合名.save({name:"yangfan",age:16})

---------------------------------------------------------

删除

# 单条件删除
db.集合名.remove({name:"yangf"})

# 多条件删除
db.集合名.remove({name:"yangfan",age:17})

---------------------------------------------------------

修改

# 单条件修改单记录(相同数据只修改一条)
db.集合名.update({name:"yangfan"},{$set:{age:20}})

# 多条件修改多记录(相同数据只修改一条)

db.集合名.update({age:201,name:"yangfan"},{$set:{age:20,name:"yang"}})

# 单条件修改单记录(相同数据修改所有)
db.集合名.update({name:"yangfan"},{$set:{age:21}},{multi:"true"})

---------------------------------------------------------

# 创建索引(阻塞)
db.testCollections.ensureIndex({name:1})

# 后台创建索引(非阻塞)
db.testCollections.ensureIndex({name:1},{background:true})

=========================================================


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值