Tengo una gran colección de 300 question
objetos en una base de datos test
. Puedo interactuar fácilmente con esta colección a través del shell interactivo de MongoDB; sin embargo, cuando intento obtener la colección a través de Mongoose en una aplicación express.js obtengo una matriz vacía.
Mi pregunta es, ¿cómo puedo acceder a este conjunto de datos ya existente en lugar de recrearlo en express? Aquí hay un código:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
mongoose.model('question', new Schema({ url: String, text: String, id: Number }));
var questions = mongoose.model('question');
questions.find({}, function(err, data) { console.log(err, data, data.length); });
Esto produce:
null [] 0
Model.collection.insert();..
mongoose.connect("mongodb://localhost/fromlab"); var Schema = mongoose.Schema; var User = mongoose.model("User", new Schema({}), "users"); User.find({}, function(err, doc){ console.log((doc)) })
Aquí hay una abstracción de la respuesta de Will Nathan si alguien solo quiere una función de complemento fácil de copiar y pegar:
simplemente haz
find(collection_name, query, callback);
que te den el resultado.por ejemplo, si tengo un documento {a: 1} en una colección 'foo' y quiero enumerar sus propiedades, hago esto:
fuente
Puede hacer algo como esto, ya que tendrá acceso a las funciones nativas de mongodb dentro de mangosta:
fuente
Tuve el mismo problema y pude ejecutar una consulta sin esquema utilizando una conexión Mongoose existente con el código a continuación. He agregado una restricción simple 'a = b' para mostrar dónde agregaría dicha restricción:
fuente
question
en el código anterior confs.files
y listo.¿Estás seguro de que te has conectado a la base de datos? (Pregunto porque no veo un puerto especificado)
tratar:
Además, puede hacer una "muestra de colecciones" en mongo shell para ver las colecciones dentro de su base de datos, ¿tal vez intente agregar un registro a través de mangosta y ver dónde termina?
Por el aspecto de su cadena de conexión, debería ver el registro en la base de datos "test".
¡Espero eso ayude!
fuente
questions
colección cuando los datos a los que intento acceder están en unaquestion
colección. ¿Mongoose pluraliza automáticamente los nombres de colección / modelo?Algo más que no era obvio, al menos para mí, fue que cuando se usa el tercer parámetro de Mongoose para evitar reemplazar la colección real con una nueva con el mismo nombre, en
new Schema(...)
realidad solo es un marcador de posición y no interfiere con la existencia. esquema asífunciona bien y devuelve todos los campos, incluso si el esquema real (remoto) no contiene ninguno de estos campos. Mongoose todavía lo querrá como
new Schema(...)
, y una variable casi seguramente no lo pirateará.fuente