一、介绍
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}) =========================================================