Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Javascript 奇数MongoDB/节点解释结果_Javascript_Node.js_Mongodb_Database - Fatal编程技术网

Javascript 奇数MongoDB/节点解释结果

Javascript 奇数MongoDB/节点解释结果,javascript,node.js,mongodb,database,Javascript,Node.js,Mongodb,Database,我想弄清楚这件事。。。任何帮助都会很棒 我在RoboMongo CLI中运行相同的查询: db.post.find({utc:{$lte:utc}}) .sort({utc:-1}).limit(100).hint({utc:-1}) 和使用本机驱动程序的我的节点应用程序: mo.post.find({utc:{$lte:utc}},{ fields:{geo:0, bin:0, flg:0, mod:0, edt:0}, hint:{utc:-1}, sort:{utc:-1}, l

我想弄清楚这件事。。。任何帮助都会很棒

我在RoboMongo CLI中运行相同的查询:

db.post.find({utc:{$lte:utc}})
.sort({utc:-1}).limit(100).hint({utc:-1})
和使用本机驱动程序的我的节点应用程序:

mo.post.find({utc:{$lte:utc}},{
  fields:{geo:0, bin:0, flg:0, mod:0, edt:0},
  hint:{utc:-1}, sort:{utc:-1}, limit:100
}).toArray(function(err, result)
出于某种原因,演出与以往大不相同。最上面的运行时间不到1ms,最下面的运行时间超过100ms。当我回顾“解释”时,我得到:

"cursor" : "BtreeCursor utc_-1",
    "isMultiKey" : false,
    "n" : 100,
    "nscannedObjects" : 100,
    "nscanned" : 100,
    "nscannedObjectsAllPlans" : 100,
    "nscannedAllPlans" : 100,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 0,
    "indexBounds" : {
        "utc" : [ 
            [ 
                ISODate("2015-01-07T00:47:32.786Z"), 
                true
            ]
        ]
    },
对于慢的一个:

cursor: "BtreeCursor utc_-1"
isMultiKey: false
n: 1
nscannedObjects: 1
nscanned: 1
nscannedObjectsAllPlans: 1
nscannedAllPlans: 1
scanAndOrder: false
indexOnly: false
nYields: 0
nChunkSkips: 0
millis: 0
indexBounds: {
utc: [1]
0:  [2]
0:  "2015-01-07T22:50:05.000Z"
1:  true
-
-
}-

有人知道这里会发生什么吗?它们正在使用相同的索引运行相同的数据库?

更新:似乎是2.0.x版的问题

我刚刚用2.0.x和1.4.x运行了完全相同的查询。当Limit=1时,两者都执行快速~1ms。当Limit=2时,1.4.x版本保持在1ms左右,而2.0.x版本则跳到25ms。所以,这不仅仅是解释输出的问题——这只是问题的一个症状

2015年1月8日星期四UTC-8上午9:04:05,约书亚·艾布拉姆斯写道: 有趣的使用1.4.x进行完全相同的查询,可以正确解释n=2的位置,依此类推。这会影响性能吗?当我运行一个Limit=1的查询时,它的速度和预期的一样快,但当Limit=2时,它的速度慢了100倍

2015年1月8日星期四UTC-8上午8:52:28,christkv写道: 不是真的。我的建议是制作一个最小的可复制的测试用例代码和数据,并在jira.mongodb.com上打开一张罚单。很难知道会发生什么。不太可能是司机,但谁也不知道。尝试使用1.4.x分支,至少要排除它是2.0.x分支的问题

2015年1月8日星期四下午5:47:45 UTC+1时,约书亚·艾布拉姆斯写道: 刚刚检查过,我正在使用驱动程序的2.0.12。还有其他想法吗

2015年1月8日星期四UTC-8上午8:23:16,christkv写道: explain只是重新调整驱动程序中的所有结果,而不是部分结果。这样你就得到了计划。我想到的一件事可能是,您使用的驱动程序早于1.4.19,在batchSize设置为1时出错

2015年1月8日星期四下午5:01:42 UTC+1时,约书亚·艾布拉姆斯写道: 我最近和司机有一系列的性能问题。

不确定根本原因是什么-当我无法得到正确的解释时,调试是不可能的:

不能为同一查询解释它们-如果它们具有相同的limit+skip值,则同一查询应产生相同的n。你能再检查一下你是否有正确查询的解释吗?还有,时间信息从哪里来?这很奇怪-它是完全相同的查询-并且它产生相同的结果。N=1的解释毫无意义,而这是一个永远无法解释的问题。两者都击中了同一个表,时间是从RoboMongo上的快速查询和HTTP客户端调用本地主机上的慢速查询通过本机节点驱动程序运行的。我在这里也看到了古怪的行为:不同但可能相关?您能在mongo shell中运行查询并发布解释吗?我对机器人很怀疑,但我对它也不太了解。它和机器人一样。问题似乎在于本机驱动程序解释: