在mongodb上搜索和创建匹配

时间:2014-03-14 02:00:50

标签: c# mongodb

我正在尝试跨mongo集合进行搜索,然后根据搜索更新任何匹配项。这允许将来的搜索仅在不匹配的项目之间运行。

我有~20k searchItem个对象可以浏览~4M项目。

集合如下

SearchItem {
    _id
    valueA
    valueB        
}

Item {
    matchIds
    valueA
    valueB
    valueC
}

我的查询正在进行

db.Item.update( { 
    valueA: SearchItem.valueA,
    valueB: SearchItem.valueB,
    matchIds: { 
                   $ne: SearchItem._id
              }                                  
 },
 { 
      $addToSet: 
                 {
                      matchIds: SearchItem._id
                 } 
 }, false, true)

这有效;但是这个查询运行时间太长,因为它在单个项目上找到了多达300K的匹配。它然后锁定并导致超时异常基本上炸毁了系统。

我感兴趣的是,如果有更好的方法来执行这些搜索,同时保留以前搜索过的内容的知识,或者是否有更好的方法来执行这些更新,从而减少了避免大量锁定所需的时间。 / p>

我有valueAvalueBvalueC的索引,查询并不总是只有valueA & valueB所以放置复合索引以便更快搜索会导致propertyNumber ^ 2个索引,不是很好。

正在使用的

MongoDb版本是V2.4.9和官方C#驱动程序V1.8.3。

0 个答案:

没有答案