Controlador de nodo nativo MongoDB: ¿Explicación está roto?

No puedo obtener una explicación adecuada utilizando el controlador mongodb nativo para Node.js. Cuando uso el mongo shell, todo está bien. ¿Mi syntax es incorrecta? ¿Algo más podría estar haciendo mal?

db.user.find({},{explain:true}).toArray db.user.find({}).explain 

He intentado ambos, hay dos documentos en la tabla de usuarios, y me da este resultado:

 { 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] ] } } 

Esto está mal. Cuando ejecuto esta misma consulta en el shell mongo, da el resultado correcto:

 "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" : [] } 

También he estado teniendo algunos otros (problemas relacionados) …

Límite = 1 = 1 ms, Límite> 1 = 150 ms (mongo-melt-down)

Odd MongoDB / Node Explica Resultados

Debería fijarse en 2.0.13 del controlador después de que hice un montón de perfiles de bajo nivel y optimizaciones.

Parece un problema 2.0.x. Ya se ha enviado el ticket.

Parece ser un problema con el controlador 2.0.x: aquí hay un hilo …

Acabo de ejecutar exactamente la misma consulta con 2.0.xy 1.4.x. Cuando Límite = 1, ambos realizan ~ 1 ms rápidos. Cuando Limit = 2, la versión 1.4.x se mantiene alrededor de 1 ms, pero la versión 2.0.x salta a 25 ms. Entonces, no es solo un problema con el resultado de la explicación, eso es solo un síntoma del problema.

El jueves 8 de enero de 2015 9:04:05 a.m. UTC-8, Joshua Abrams escribió: Interesante … la misma consulta con 1.4.x produce una explicación adecuada donde n = 2 (y así sucesivamente). ¿Podría esto estar afectando el rendimiento? Cuando ejecuto una consulta donde Limit = 1 es rápido (como se esperaba) pero cuando Limit = 2 es 100 veces más lento …

El jueves 8 de enero de 2015, 8:52:28 AM UTC-8, christkv escribió: en realidad no. Mi sugerencia es hacer un caso de prueba reproducible mínimo (código y datos) y abrir un ticket en jira.mongodb.com. Es un poco difícil saber qué podría estar pasando. Es poco probable que sea el conductor, pero uno nunca sabe. pruebe con la twig 1.4.x y, al menos, descarte que se trata de un problema de la twig 2.0.x.

El jueves, 8 de enero de 2015, 5:47:45 PM UTC + 1, Joshua Abrams escribió: “Sólo revisé y estoy usando 2.0.12 del controlador”. ¿Algún otro pensamiento?

El jueves 8 de enero de 2015, 8:23:16 a.m. UTC-8, christkv escribió: explicar es solo volver a sintonizar todos los resultados en el controlador en lugar de los resultados parciales. así consigues el plan. Una cosa que me viene a la mente es que está en un controlador anterior a 1.4.19 que tuvo un error donde batchSize se estableció en 1.

El jueves 8 de enero de 2015, 5:01:42 p.m. UTC + 1, Joshua Abrams escribió: Últimamente he tenido una serie de problemas de rendimiento con el controlador. Límite = 1 = 1 ms, Límite> 1 = 150 ms (mongo-melt-down)

No estoy seguro de cuál es la causa raíz, y es imposible de depurar cuando no puedo obtener una explicación adecuada: MongoDB Native Node Driver: ¿Explicación está roto?