MongoDB本机节点驱动程序:解释已损坏
MongoDB Native Node Driver: Explain is Broken?
我无法使用 Node.js 的本机 mongodb 驱动程序获得正确的解释。当我使用mongo外壳时,一切都很好。我的语法有误吗?我还可能做错什么吗?
db.user.find({},{explain:true}).toArray
db.user.find({}).explain
我已经尝试了这两种方法,用户表中有两个文档,它给了我这个输出:
{ cursor: 'BasicCursor',
isMultiKey: false,
n: 1,
nscannedObjects: 1,
nscanned: 1,
nscannedObjectsAllPlans: 1,
nscannedAllPlans: 1,
scanAndOrder: false,
indexOnly: false,
nYields: 0,
nChunkSkips: 0,
millis: 0,
allPlans:
[ { cursor: 'BasicCursor',
isMultiKey: false,
n: 1,
nscannedObjects: 1,
nscanned: 1,
scanAndOrder: false,
indexOnly: false,
nChunkSkips: 0 } ],
server: 'Rocket.local:27017',
filterSet: false,
stats:
{ type: 'LIMIT',
works: 2,
yields: 0,
unyields: 0,
invalidates: 0,
advanced: 1,
needTime: 1,
needFetch: 0,
isEOF: 1,
children: [ [Object] ] } }
这是错误的。当我在 mongo shell 中运行相同的查询时,它会给出正确的输出:
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
"nscannedObjectsAllPlans" : 2,
"nscannedAllPlans" : 2,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"server" : "Rocket.local:27017",
"filterSet" : false,
"stats" : {
"type" : "COLLSCAN",
"works" : 4,
"yields" : 0,
"unyields" : 0,
"invalidates" : 0,
"advanced" : 2,
"needTime" : 1,
"needFetch" : 0,
"isEOF" : 1,
"docsTested" : 2,
"children" : []
}
我也遇到了其他一些(相关问题)...
极限 = 1 = 1ms,极限> 1 = 150ms(mongo-melt-down)
奇数MongoDB/节点解释结果
在我做了一堆低级分析和优化后,应该在驱动程序的 2.0.13 中修复。
看起来像一个 2.0.x 问题。已提交工单。
似乎是2.0.x驱动程序的问题:这是一个线程...
我刚刚用 2.0.x 和 1.4.x 运行了完全相同的查询。当限制 = 1 时,两者都执行快速 ~1ms。当 Limit = 2 时,1.4.x 版本保持在 1ms 左右,但 2.0.x 版本跳到 25ms。因此,这不仅仅是解释输出的问题 - 这只是问题的症状。
2015 年 1 月 8 日星期四上午 9:04:05 UTC-8,约书亚·艾布拉姆斯写道:有趣的...使用 1.4.x 的完全相同的查询会产生正确的解释,其中 n = 2(依此类推)。这会影响性能吗?当我运行 Limit = 1 的查询时,它很快(如预期的那样),但当 Limit = 2 时,它慢了 100 倍......
2015 年 1 月 8 日星期四上午 8:52:28 UTC-8,Christkv 写道:不是真的。我的建议是制作一个最小的可重现测试用例(代码和数据)并在 jira.mongodb.com 上打开一个票证。有点难以知道会发生什么。它不太可能是司机,但人们永远不知道。尝试使用 1.4.x 分支,至少排除它是 2.0.x 分支问题。
2015 年 1 月 8 日星期四下午 5:47:45 UTC+1,Joshua Abrams 写道:刚刚检查过,我使用的是驱动程序的 2.0.12。还有其他想法吗?
2015 年 1 月 8 日星期四上午 8:23:16 UTC-8,Christkv 写道: 解释只是重新调整驱动程序中的所有结果,而不是部分结果。 因此,您得到了计划。想到的一件事可能是您使用的是早于 1.4.19 的驱动程序,该驱动程序在 batchSize 设置为 1 时出错。
2015 年 1 月 8 日星期四下午 5:01:42 UTC+1,Joshua Abrams 写道: 我最近遇到了一系列驱动程序的性能问题。极限 = 1 = 1ms,极限> 1 = 150ms(mongo-melt-down)
不确定根本原因是什么 - 当我无法获得适当的解释时无法调试:MongoDB 本机节点驱动程序:解释已损坏?
- 检测图像URL是否已损坏JQUERY
- 节点:通过请求下载zip,zip已损坏
- 将 MVC 3 应用程序部署到 URL 文件夹已损坏 JavaScript 和内容路径
- 从 Base64 转换图像时出错 - HTMLImageElement 已损坏
- 异步加载JQuery时Tabbed Box已损坏
- Angular 2-检查图像url是否有效或已损坏
- JCrop使用集合选择选项时插件已损坏
- Jquery提交表单已损坏
- MongoDB 在保存数据时抛出错误(拓扑已损坏)
- iOS 7 全屏 Web 应用程序中的 JavaScript 警报已损坏
- MongoDB本机节点驱动程序:解释已损坏
- 已选择选项已损坏或.
- Base64 - 文件已损坏
- 我的 mailto 链接中的换行符在 Android 手机上已损坏
- 为什么 Chrome 扩展程序图片在添加到 DOM 时显示为已损坏
- $parent变量在ng-include上从单独的控制器设置时已损坏
- base64 映像已损坏上传到 S3
- .fadeIn()和.fadeOut()函数已损坏
- D3.js enter()对于svg形状动画已损坏,但更新和删除它们都很好
- 基于JQuery的全宽响应图像滑块已损坏