一、MongoDB基本概念
1.数据库(database)
与普通关系型数据库一样,为独立的数据集合,一个MongoDB中可以建立多个数据库。
MongoDB的默认数据库为"db",该数据库存储在data目录中。MongoDB的单个实例可以
纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文中。
2.集合(collection)
与关系型数据库中的表相对应,在MongoDB中为多个文档的集合。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,
但通常情况下我们插入集合的数据都会有一定的关联性。
3.文档(document)
与关系型数据库中的行相对应,文档是一组键值(key-value)对(即 BSON)。
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,
这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
4.字段(field)
与关系型数据库中的列相对应,在MongoDB中为文档中的键值
5.索引(index)
与关系型数据库中的表相对应
####6.主键(primary key)
MongoDB自动将_id字段设置为主键
二、MongoDB增删改查命令
1.数据库相关
创建/切换数据库
use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库。
查看数据库
db 查看当前数据
show dbs 查看所有数据库,创建的数据库不会显示在该命令下,除非你向其中插入一些数据
删除数据库
db.dropDatabase() 删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名
2.集合相关(database)
创建集合
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
删除集合
db.collection.drop()
其中collection为集合名
3.文档相关(database)
插入文档
db.COLLECTION_NAME.insert(document)
除了insert()方法 save()方法也可以向集合中插入文档
删除文档
db.COLLECTION_NAME.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别
更新文档
db.COLLECTION_NAME.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
查询文档
db.COLLECTION_NAME.find(query, projection)
参数说明
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法 db.col.find().pretty()