Timeout for db.collection.distinct()?



>我有一个数据库,里面收集了大约9万个文档。每个文档如下:

{
'my_field_name': "a", # Or "b" or "c" ...
'p1': Array[30], 
'p2': Array[10000]
}

字段名称大约有 9 个唯一值。当集合中有 ~30k 个文档时:

>>> db.collection.distinct("my_field_name")
["a", "b", "c"] 

但是,现在有 90k 个文档,db.collection.distinct()返回一个空列表。

>>> db.collection.distinct("my_field_name")
[]

db.collection.distinctmaxTimeMS设置吗?如果是这样,我怎么能将其设置为更高的值。如果不是,我还能调查什么?

为了立即加快查询的执行时间,您可以做的一件事是为您在其上运行"不同"操作的字段编制索引(如果该字段尚未编制索引(。

话虽如此,如果要设置maxTimeMS,一种解决方法是将查询重写为聚合,并在返回的游标上设置操作超时。例如:

db.collection.aggregate([
{ $group: { _id: '$my_field_name' } },
]).maxTimeMS(10000);

然而,与distinct不同的是,上面的查询将返回一个游标。

最新更新