mongodb

194 阅读3分钟

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