mongodb入门必备实操(二)
mongodb @type 操作符
以类型是string为例
db.col.find({‘title’:{$type:2}})
db.col.find({‘title’:{$type:‘string’}})
这两种方法的输出结果是一样的
mongodb limit与skip方法
mongodb limit()方法
db.集合名.find().limit(number)
db.col.find({},{‘title’:1,_id:0}).limit(2)
db.col.find().limit(2).pretty()
mongodb skip()方法
db.集合名.find().limit(number).skip(number)
db.col.find().limit(2).skip(1)
跳过第一个,显示两个
mongodb排序
mongodb sort()方法
db.集合名.find().sort({要排序的字段(key):1})
key的值:1为升序排列、-1为降序排列
db.col.find({},{‘title’:1,_id:0}).sort({‘likes’:-1})
db.col.find({},{‘title’:1,_id:0}).sort({‘likes’:-1})
按照likes字段,进行降序排列显示
mongodb 索引
createIndex()方法
mongodb中使用createIndex()方法来创建索引
db.集合名.createIndex(keys,option)
key值为你要创建的索引字段,1为指定按升序创建索引,-1为指定按降序创建索引
db.col.createIndex({‘title’:1})
也可以使用多个字段创建索引
db.col.createIndex({‘title’:1,‘description’:-1})
createIndex()接收可选参数,可选参数列表如下:
实例:
db.col.createIndex({‘likes’:1,‘title’:1},{background:true})
通过创建索引时加background:true的选项,让创建工作在后台执行
mongodb 聚合
aggregate()方法
mongodb中聚合的方法使用aggregate()
db.集合名.aggregate(参数)
事先存好需要用到的数据
现在根据每个作者写的文章数,使用aggregate()计算:
类似sql语句:select by_user,count(*) from col1 group by by_user
下表展示了一些聚合的表达式:
管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
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
性