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



在 【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关键字

mongoDB基础篇——NoSQL特性及MongoDB数据查询_第1张图片 

2、$or和$nor

mongoDB基础篇——NoSQL特性及MongoDB数据查询_第2张图片 

3、$size 

专门用于查询指定长度的数据记录

mongoDB基础篇——NoSQL特性及MongoDB数据查询_第3张图片 

4、正则表达式

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

 

5、游标

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

mongoDB基础篇——NoSQL特性及MongoDB数据查询_第4张图片 

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数据库的使用,相信对于这部分内容应该有一个清晰的轮廓和实战运用能力。


你可能感兴趣的:(mongoDB基础篇——NoSQL特性及MongoDB数据查询)