Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
C# MongoDb Find()带索引的完整扫描_C#_Mongodb - Fatal编程技术网

C# MongoDb Find()带索引的完整扫描

C# MongoDb Find()带索引的完整扫描,c#,mongodb,C#,Mongodb,在mongo db中 > show dbs admin (empty) data 23.9423828125GB local (empty) 我有一个带有索引的表: > db.XXX.count(); 80089670 C#: 当我使用C#驱动程序进行查询时: 我得到一个暂停 无法从传输连接读取数据:连接 尝试失败,因为关联方没有正确响应 一段时间后,或建立的连接失败,因为 连接的主机无法响应 在Mongo日志中 Mon Aug 22 10:08:50[conn9]

在mongo db中

> show dbs
admin   (empty)
data    23.9423828125GB
local   (empty)
我有一个带有索引的表:

> db.XXX.count();
80089670
C#:

当我使用C#驱动程序进行查询时:

我得到一个暂停

无法从传输连接读取数据:连接 尝试失败,因为关联方没有正确响应 一段时间后,或建立的连接失败,因为 连接的主机无法响应

在Mongo日志中

Mon Aug 22 10:08:50[conn9]query data.XXX ntoreturn:1 reslen:36 n扫描:80089670{YYY:“1482092”}返回:0 48935ms

可能是什么?何时真正执行查询?为什么我不能得到结果

编辑1:添加新索引

周一8月22日10:17:38[conn12]在{({YYY:-1}):1}上建立新索引 对于data.XXX

            4000000/80089670        4%
            7866400/80089670        9%
            11403000/80089670       14%
            15000000/80089670       18%
            19000000/80089670       23%
            22988600/80089670       28%
            26454700/80089670       33%
            30000000/80089670       37%
            33438600/80089670       41%
            37000000/80089670       46%
            40810600/80089670       50%
            44132200/80089670       55%
            48000000/80089670       59%
            52000000/80089670       64%
            55618300/80089670       69%
            59000000/80089670       73%
            62170100/80089670       77%
            66000000/80089670       82%
            70000000/80089670       87%
            74000000/80089670       92%
            77874500/80089670       97%
即使有了新的索引-同样的问题: Mongo shell:

> printjson(db.XXX.findOne({YYY:"1517077"}));
蒙古族

Mon Aug 22 10:33:40 [conn4] query data.XXX ntoreturn:1 reslen:36 nscanned:80089670 { YYY: "1517077" }  nreturned:0 48751ms

游标的大小以字节为单位返回其大小。为了防止所有扫描,您应该感兴趣的是文档的数量。使用以下代码段:

collection.FindAll().Count();

我犯了一个错误-mongoDb中的所有内容都区分大小写

我在
yyy
上添加了索引,而不是
yyy

即使我在表中没有名为yyy且索引已成功创建,也没有警告消息:(


我在正确的列名上重新创建了一个索引。现在一切都很快。

它扫描了8000万个文档,需要很多时间)@Hohhi为什么?我添加了一个索引。你能解释一下完整扫描吗?这是它在日志中写的:nscanned:80089670可能索引正在上升,你已经设置好了descending@Hohhi-我知道,但怎么可能?我错过什么了吗?如果我们有一个索引,即使表很大,访问时间也应该是O(1)否?
> printjson(db.XXX.findOne({YYY:"1517077"}));
Mon Aug 22 10:33:40 [conn4] query data.XXX ntoreturn:1 reslen:36 nscanned:80089670 { YYY: "1517077" }  nreturned:0 48751ms
collection.FindAll().Count();