MongoDB是一个基于分布式文件存储的开源的数据库系统,在处理文本的时候,尤其适合,其结构类似于JSON格式,以key-value的字典形式来进行存储(BSON).

文档是MongoDB中的数据的基本单元,每个文档,均存在一个特殊的键“_id”,这个用来区分文档,每个文档有独一无二的值。key的类型是字符串类型,键不能有重复的部分。

集合是一组文档,相当于动态的一张表,尽量把相关类型的文档组织在一起。命名是不能以“system.”开头,这是为系统保留的前缀。

数据库是多个集合或者0个集合,一般而言,将一个应用程序的所有的数据放在同一个数据库中。一个MongoDB可以建立多个数据库,默认的数据库为“db”,该数据库存储在data目录中,并且一般而言,命名采用小写来实现。对于一些数据库名而言,是保留的,如admin,local,config等名字。

连接数据库时的语法:

mongodb 数据库 有哪几部分组成_mongodb 数据库 有哪几部分组成


数据库的创建:use DataBase_Name

数据库的删除:db.dropDatabase()

数据库中的集合的删除:db.collection.drop()

插入文档:db.collection.insert(document)

db.collection.save(document)

db.collection.insertOne()

更新文档:db.collection.update()

mongodb 数据库 有哪几部分组成_mongodb 数据库 有哪几部分组成_02


db.collection.save()

db.collection.updateOne()

db.collection.updateMany()

删除文档:db.collection.remove()

mongodb 数据库 有哪几部分组成_数据库_03


db.collection.deleteMany()

db.collection.deleteOne()

查询文档:db.collection.find(query, projection)

query 查询条件

projection 指定返回文档键值

查询条件:

mongodb 数据库 有哪几部分组成_数据_04


查询条件中如果有与的关系,以逗号隔开即可

查询条件中如果有或的关系,以关键字$or来标明

mongodb 数据库 有哪几部分组成_数组_05


mongodb 数据库 有哪几部分组成_数据_06


db.collection.find().limit(NUMBER)

db.collection.find().limit(NUMBER).skip(NUMBER)

用limit和skip结合可以实现分页

排序:db.collection.find().sort({key:1}) <1正序,-1倒序>

当同时用sort,skip,limit时,执行顺序总是sort,skip,limit

尽量避免用Skip,因为其总是一条一条的处理数据,这样会使得效率特别的低。

索引的存在是为了能够极大的提高查询的效率,如果没有索引,则需要扫描集合中的每个文件,这种扫描效率是非常低的,尤其在数据量比较大的情况下,所以,,索引应用随之而出,是一种特殊的数据结构,在一个易于遍历读取的数据结构中,索引是对于数据库中的一列或者多列的值进行排序的一种结构。

db.collection.ensureIndex() <1正序,-1倒序>

索引之后可以接受可选参数

还有一些操作:如聚合操作,统计平均值,求和的时候会用到,并且操作返回计算之后的数据结果,但因为对于数据库理解不深入,所以,这一段先放过,然后看完关系型数据库之后,再来深入研究这一段的知识点。目前看的这部分的简单的操作,足以支撑我的项目所用。

MongoDB中的一些特殊的操作符的总结:
条件操作符:
lt(lessthan)lte(lt equal)
gt(greaterthan)gte(gt equal)
ne(notequal)eq(equal)
类型操作符type:用于匹配数据类型,并返回结果修改器的使用:set:用于指定一个字段的值,如果这个字段不存在,则创建
unset:将此键完全删除inc:用于增加已有键的值,但只能用于整形,长整型,或者双精度浮点型的数据,若不存在该键则创建一个
对于数组的操作而言:ne,push均可实现单个元素往数组中添加的功能,区别在于前者可以保证数据不会重复,addToSet,each
可实现多个元素的添加;$pop可实现数组的元素的删除,1表述从数组的末尾来删除,-1表述从数组的头部来删除元素。