>我有一个数据库,里面收集了大约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.distinct
有maxTimeMS
设置吗?如果是这样,我怎么能将其设置为更高的值。如果不是,我还能调查什么?
为了立即加快查询的执行时间,您可以做的一件事是为您在其上运行"不同"操作的字段编制索引(如果该字段尚未编制索引(。
话虽如此,如果要设置maxTimeMS
,一种解决方法是将查询重写为聚合,并在返回的游标上设置操作超时。例如:
db.collection.aggregate([
{ $group: { _id: '$my_field_name' } },
]).maxTimeMS(10000);
然而,与distinct
不同的是,上面的查询将返回一个游标。