Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x db.collection.distinct()超时?_Python 3.x_Mongodb - Fatal编程技术网

Python 3.x db.collection.distinct()超时?

Python 3.x db.collection.distinct()超时?,python-3.x,mongodb,Python 3.x,Mongodb,我有一个数据库,收集了大约90k个文档。每份文件如下: { '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()返回

我有一个数据库,收集了大约90k个文档。每份文件如下:

{
'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
设置?如果是这样,我如何将其设置为更高的值。如果没有,我还可以调查什么?

要立即加快查询的执行时间,可以做的一件事是为正在运行“distinct”操作的字段编制索引(如果该字段尚未编制索引)

也就是说,如果要设置
maxtimes
,一个解决方法是将查询重写为聚合,并在返回的游标上设置操作超时。例如:

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

但是,与
distinct
不同的是,上述查询将返回一个光标。

更有可能是您引用了错误的集合或错误的字段。@D.SM 100%确定情况并非如此。在MongoShell中使用仅3个itemsTry的集合对查询进行了双重检查。也在MongoShell中进行了尝试。相同的结果您尝试了什么,结果是什么?索引要求每个条目的
$my\u field\u name
都是唯一的。如问题中所述,~10k个文档对于
$my\u field\u name具有相同的值
索引在MongoDB中不必是唯一的。可以指定非唯一索引。唯一索引是默认的,但是可以通过设置
{Unique:False}
@newkid来覆盖它们,正如Joe所指出的,索引在MongoDB中不必是唯一的。衷心希望这不是我的答案被否决的原因。干杯。@Iyanaudelekan,同意了!