mongodb入门必备实操(二)

mongodb @type 操作符

mongodb入门必备实操(二)

以类型是string为例

db.col.find({‘title’:{$type:2}})

db.col.find({‘title’:{$type:‘string’}})
mongodb入门必备实操(二)

这两种方法的输出结果是一样的

mongodb limit与skip方法

mongodb limit()方法

db.集合名.find().limit(number)

db.col.find({},{‘title’:1,_id:0}).limit(2)
mongodb入门必备实操(二)

db.col.find().limit(2).pretty()
mongodb入门必备实操(二)

mongodb skip()方法

db.集合名.find().limit(number).skip(number)

db.col.find().limit(2).skip(1)

跳过第一个,显示两个
mongodb入门必备实操(二)

mongodb排序

mongodb sort()方法

db.集合名.find().sort({要排序的字段(key):1})

key的值:1为升序排列、-1为降序排列

db.col.find({},{‘title’:1,_id:0}).sort({‘likes’:-1})
mongodb入门必备实操(二)

db.col.find({},{‘title’:1,_id:0}).sort({‘likes’:-1})
mongodb入门必备实操(二)

按照likes字段,进行降序排列显示

mongodb 索引

createIndex()方法

mongodb中使用createIndex()方法来创建索引

db.集合名.createIndex(keys,option)

key值为你要创建的索引字段,1为指定按升序创建索引,-1为指定按降序创建索引

db.col.createIndex({‘title’:1})

mongodb入门必备实操(二)

也可以使用多个字段创建索引

db.col.createIndex({‘title’:1,‘description’:-1})

mongodb入门必备实操(二)

createIndex()接收可选参数,可选参数列表如下:
mongodb入门必备实操(二)

实例:

db.col.createIndex({‘likes’:1,‘title’:1},{background:true})
mongodb入门必备实操(二)

通过创建索引时加background:true的选项,让创建工作在后台执行

mongodb 聚合

aggregate()方法

mongodb中聚合的方法使用aggregate()

db.集合名.aggregate(参数)

事先存好需要用到的数据
mongodb入门必备实操(二)

现在根据每个作者写的文章数,使用aggregate()计算:

mongodb入门必备实操(二)

类似sql语句:select by_user,count(*) from col1 group by by_user

下表展示了一些聚合的表达式:

mongodb入门必备实操(二)

管道的概念

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

表达式:处理输入文档并输出。表达式时无状态的,只能用于即使算当前聚合管道的文档,不能处理其他文档。

聚合框架中常用的几个操作:
mongodb入门必备实操(二)

管道操作符实例

1、$project实例

db.article.aggregate({$project:{title:1,author:1,}});

这样的话结果中就只含有_id,title和author三个字段了,默认情况下 _id字段是被包含的,如果要想不包含 _id的话可以这样写:

db.article.aggregate({$project:{_id:0,title:1,author:1}});

2、$match实例

db.article.aggregate([{$match:{score:{gt:70,lte:90}}},{$group:{_id:null,count:{$sum:1}}}]);

$match 用于获取分数大于70小于或等于90的记录,然后将符合条件的记录送到下一阶段 $group管道操作符进行处理。

3、$skip实例

db.article.aggregate({$skip:5});

经过$skip管道操作符处理后,前五个文档被’过滤‘掉。

mongodb复制(副本集)

mongodb复制是将数据同步在多个服务器的过程。

复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的高可用性,并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。

什么是复制?

  • 保障数据的安全性

  • 数据高可用性(24*7)

  • 灾难恢复

  • 无需停机维护(如备份,重建索引,压缩)

  • 分布式读取数据

    mongodb复制原理

    docker run -d -v $(pwd)/code:/code -p 9010:9010 --name creditserver

  • 数据高可用性(24*7)

  • 灾难恢复

  • 无需停机维护(如备份,重建索引,压缩)

  • 分布式读取数据

    mongodb复制原理