您的位置:首页 > 数据库 > Mongodb

mongoDB基础篇——NoSQL特性及MongoDB数据查询

2016-01-11 11:03 477 查看


在 【MongoDB基础篇——走进非关系型数据库mongoDB】和【MongoDB应用篇——面向集合的数据库操作】中,初步介绍了非关系型数据库MongoDB的基本结构和传统关系型数据库的区别,以及数据库的增删改查操作。
本文将进一步介绍MongoDB的特点,深入了解面向集合操作的数据库增删改查。

一、MongoDB特性

结合传统关系型数据库,我们从以下四个方面再度深入认识NoSQL数据库,以MongoDB为代表
1、事务:
传统关系型数据库严格遵循数据库事务的四个特性ACID,在NoSQL数据库中,不一定遵循传统数据库的一些基本要求;在而MongoDB 3.2在2015MongoDB分享会上MongoDB开发团队提出,目前MongoDB主要把分为两块,传统关系型和NoSQL,这表明MongoDB除了拥有传统DB丰富查询语言、强一致性、丰富的索引之外,还囊括了NoSQL高度灵活、高扩展、高性能的特点。
2、分布式存储:
传统数据库库存储数据特点是将数据记录统一存放在DB表中,同文件存储的特点一样,最终均面临一个数据容量和读取速度的问题。NoSQL数据库是以分布式进行存储,通过存储数据节点,各节点依次向下延伸,减轻了单个数据库存储压力。MongoDB作为典型的NoSQL数据库,自然也许有分布式存储的特点
3、水平可扩展
正是由于NoSQL数据库分布式存储的特点,也使得原本需要通过扩充磁盘容量以增加数据库存储量的扩展方式,NoSQL数据库便可通过节点水平扩张,增加节点存储的数量来扩大数据存储量。
4、读写快速
NoSQL 数据库通过key-value形式存储数据,相对于传统数据库在查找读写时通常遍历整张表而言,以键值对存储数据提高了对数据库的读写速度。

二、MongoDB 数据操作

MongoDB 我们称之为NoSQL数据库,也不时看到这样的说法“MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品”,之所以这样对MongoDB 进行描述,原因在于它对数据库操作在事务等方面又贴近于关系型数据库特点,而本身又具备非关系型数据块灵活、分布式的特点。数据库操作语法跟js面向对象的查询语句很相似。这在之前的博客中有初步介绍。现在通过详细介绍MongoDB 的数据库操作语句,体会MongoDB 的特性。
查询
1、$in和$nin 
类似于关系型数据库中in关键字


 
2、$or和$nor


 
3、$size 
专门用于查询指定长度的数据记录


 
4、正则表达式
MongoDB的查询语句跟js语法很像,同样也可以通过正则表达式进行数据查询


 
5、游标
通过游标.hasNext(),返回true即下一条记录不为空,才开始查找下一条记录,而不是全部一次性将所有符合条件的记录都查出来。


 
6、Distinct


 
7、null
查询出某记录为空或者该记录不存在的数据

更新
更新语句含有以下四个参数控制更新范围和记录
Db.collection.update(A,B,C,D)
A:筛选条件
B:更新内容
C:更新或插入
D:如果有多条记录是否全部更新
例如:
Db.testImage.update({name:“user1”,{sex:male}});
将testImage集合中name=user1这条记录的sex属性更新为male;默认第三个参数(更新或插入)值为true,意思是:如果该条记录存在,如已经有了一条({name:”user1”}{sex:”famale”})则直接更新sex属性,如果是攒在name为user1的记录,但sex属性为空,则直接加上该属性即可。
插入:Insert
这一注意save()方法,它表示例如db.mycollection.save(x);//如果存在该条记录,更新;如果不存在,插入。注意区分。

通过对MongoDB为代表的NoSQL数据库的进一步认识,结合之前博客记录的积累,对于NoSQL数据库例如Redis、MongoDB这些具有相同特点的数据库都应该有了初步的认识。结合项目中队NoSQL数据库的使用,相信对于这部分内容应该有一个清晰的轮廓和实战运用能力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: