码迷,mamicode.com
首页 > 数据库 > 详细

mongodb配置权重的方案改写

时间:2016-07-01 17:59:15      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

我想配置一个权重池,有3个权重A,B,C,根据不同权重选取2个id

我原本的设计是

权重A:[id1,id2...]

权重B:[id1,id2...]

权重C:[id1,id2...]

权重的操作有$push, $pop,和取整个表的操作,这样如果频繁操作有可能导致所标

我一个同事提出了另一个方案:

{

  {

    uid:id1

    weight:A

  }

  {

    uid:id2

    weight:B

  }

......

}

只要把weight key加上索引,取的时候根据weight索引去取全部A的文档。

下面方面的优势如下:

直接用$set 就可以改变权重了,(用pop,push)pop某个值会遍历数组,数据量大了,效率不高,甚至有可能导致锁表。

weight加上索引后,取A权重的全部id的速度,比上面没加索引的快2/3(加了索引,是直接查找)。

 

mongodb配置权重的方案改写

标签:

原文地址:http://www.cnblogs.com/2wind/p/5633864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!