一、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: { 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()