La estructura de la base de datos es;
{ "key" : "test" } { "key" : "test" } { "key" : "test" } { "key" : "test" }En mongoshell la consulta,
db.collectionName.find({}, {key: 1, _id: 0})enumera los documentos.
Sin embargo, cuando ejecuto la misma consulta en nodejs me da un error como;
{ "name": "MongoError", "message": "Failed to parse: comment: 1. 'key' field must be of BSON type string.", "ok": 0, "errmsg": "Failed to parse: comment: 1. 'key' field must be of BSON type string.", "code": 9, "codeName": "FailedToParse" }no entiendo cual puede ser el problema?
Soy consciente de que la pregunta no tiene sentido, sin embargo, sin sentido, esto es lo que tengo. ¿Se trata de versiones de mongo o qué?
editar: tiene razón al escribir el código Node.js, así que aquí está, la consulta dentro de una llamada async.series;
async.series([ function(callback){ db.collection("collectionName").find({}, {key: 1, _id: 0}).toArray(function(err, result){ if(err){ callback(err); } else{ callback(null, result); } }); } ])No sé por qué incluyó la línea de shell mongo que funcionó pero no incluyó la línea Node que falló, lo que sería mucho más relevante aquí.
En cualquier caso, el controlador nativo de Mongo para Node (que supongo que está usando aquí) funciona de una manera completamente diferente al shell de Mongo, así que no espere que funcione igual.
Mongo shell ejecuta todo secuencialmente. En Node, debe usar devoluciones de llamada o promesas para el control de flujo que no hace en el shell de Mongo. También hay algunas diferencias en la forma de acceder a las colecciones. En el shell de Mongo, generalmente usa db.collectionName . También en el shell de Mongo tiene algunas cosas predefinidas, como funciones relacionadas con los identificadores de objetos, por ejemplo. Y finalmente, Mongo usa BSON para datos y en Node usa literales de objetos de JavaScript (más como JSON pero menos estricto). Node usa V8 más funcionalidad adicional y Mongo shell usa SpiderMonkey, sin ninguna funcionalidad disponible en Node. Todo tiene consecuencias en diferencias sutiles.
No incluyó la línea de nodo que falló, por lo que nadie podrá reparar esa línea. Pero ciertamente necesita echarle un vistazo y ver si está siguiendo la documentación de cualquier controlador Mongo u ODM que esté usando.