mongodb
## 一、MongoDB是什么?
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
## 二、MongoDB历史
• 2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出
• 2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强
• 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库
• 2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强及bug修复
• 2013年08月20日,MongoDB 2.4.6 发布
• 2013年11月01日,MongoDB 2.4.8 发布
• ......
## 三、常用命令与方法
#### 1.数据库(database)命令
• mongo:
进入交互模式
• show dbs:
查看所有数据库
• use 数据库名:
创建/切换数据库
• db.getName()
或 db:
查看当前使用的数据库
• db.stats():
查看当前数据库状态
• db.dropDatabase():
删除当前数据库
#### 2.集合(collection)命令
• 创建集合:
db.createCollection("集合名“)
• 查看当前数据库下所有集合:
db.getCollectionNames() 或 show collections
• 删除集合:
db.集合名.drop()
#### 3.文档(document)命令
##### ※ 文档是对象包裹键值对形式:例:{ name : "Dexter" }
#### ①添加
• save:
db.集合名.save( document )
• insert:
db.集合名.insert( document || [...document] )
• insertOne:
db.集合名.insertOne( document )
• insertMany:
db.集合名.insertMany( document || [...document] )
#### ②修改
• save:
db.集合名.save( document )
※ 会直接覆盖之前的document
• update:
db.集合名.update( query, update, options )
query:查询条件
update:修改内容
options:额外选项配置
upsert:若查询不到时是否增加这条记录,默认false
multi:是否修改多条,默认false
• updateOne:同insertOne
• updateMany:同insertMany
#### ③删除
• remove:
db.集合名.remove( query, options )
query:查询条件
options参数:justOne:是否只删除一条,默认false
• deleteOne:同insertOne
• deleteMany:同insertMany
#### ④查询
• 查询集合内所有记录:
db.集合名.find()
• 查询age = 22的:
db.集合名.find( { age :22 } )
以下代码都是写在db.集合名.find( )中的
• age > 22:
{ age: { $gt: 22 } }
• age < 22:
{ age: { $lt: 22} }
• age >= 22:
{ age: { $gte: 22 } }
• age <= 22:
{ age: { $lte: 22 } }
• age != 22:
{ age: { $ne: 22 } }
• age >= 22 并且 age <= 26:
{ age: { $gte: 22, $lte: 26 } }
• name = 张三 并且 age = 20:
{ name: '张三', age: 20 }
• 指定name、age:
{}, { name: 1, age: 1 }
• 不要_id:
{}, { name: 1, age: 1, _id: 0 }
• 按age升序:
db.集合名.find().sort({ age: 1 })
• 按age倒序:
db.集合名.find().sort({ age: -1 })
• 查询 5 条记录(限制条数):
db.集合名.find().limit(5)
• 查询 10 条之后的记录(跳过前10条):
db.集合名.find().skip(10)
• 查询 10 条之后的 5 条记录:
db.集合名.find().skip(10).limit(5)
• 查询第一条:
db.集合名.findOne()
• 获取查询结果的个数:
db.集合名.find().count()

浙公网安备 33010602011771号