MongoDB是一个基于分布式文件存储的开源的数据库系统,在处理文本的时候,尤其适合,其结构类似于JSON格式,以key-value的字典形式来进行存储(BSON).
文档是MongoDB中的数据的基本单元,每个文档,均存在一个特殊的键“_id”,这个用来区分文档,每个文档有独一无二的值。key的类型是字符串类型,键不能有重复的部分。
集合是一组文档,相当于动态的一张表,尽量把相关类型的文档组织在一起。命名是不能以“system.”开头,这是为系统保留的前缀。
数据库是多个集合或者0个集合,一般而言,将一个应用程序的所有的数据放在同一个数据库中。一个MongoDB可以建立多个数据库,默认的数据库为“db”,该数据库存储在data目录中,并且一般而言,命名采用小写来实现。对于一些数据库名而言,是保留的,如admin,local,config等名字。
连接数据库时的语法:
数据库的创建:use DataBase_Name
数据库的删除:db.dropDatabase()
数据库中的集合的删除:db.collection.drop()
插入文档:db.collection.insert(document)
db.collection.save(document)
db.collection.insertOne()
更新文档:db.collection.update()
db.collection.save()
db.collection.updateOne()
db.collection.updateMany()
删除文档:db.collection.remove()
db.collection.deleteMany()
db.collection.deleteOne()
查询文档:db.collection.find(query, projection)
query 查询条件
projection 指定返回文档键值
查询条件:
查询条件中如果有与的关系,以逗号隔开即可
查询条件中如果有或的关系,以关键字$or来标明
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表述从数组的头部来删除元素。