sql >> Base de Datos >  >> NoSQL >> MongoDB

consultar una colección sin pasar el esquema en mongoose

Desde la página de inicio de Mongoose:

Mongoose proporciona una solución sencilla basada en esquemas para modelar los datos de su aplicación e incluye conversión de tipos integrada, validación, creación de consultas, enlaces de lógica de negocios y más, listos para usar.

Mongoose no puede inferir un esquema a partir de una colección de documentos potencialmente únicos. MongoDB no aplica el esquema a los documentos que se almacenan en una colección.

Entonces, Mongoose agrega una capa sobre el controlador nativo de NodeJS (aquí) que muchos encuentran más productivo. Sin embargo, no es un requisito usarlo con MongoDB cuando se usa Node.JS.

Mongoose necesita dos cosas fundamentalmente para funcionar:

  1. Esquema ==esto define la estructura del documento (referencia). Puede agregar validación, nuevos métodos, agregar propiedades virtuales, usar tipos de datos, establecer referencias a otras colecciones (modelos).
  2. Modelo ==esta es la clase que luego se usa en tiempo de ejecución para expresar consultas contra colecciones (referencia). Una definición de esquema se utiliza para construir un modelo.

Entonces, como viste en la muestra que pegaste, hay un gatito Schema definido, y luego un Model Kitten es creado. Lo bueno de usar un esquema y un modelo es que Mongoose luego aplica las propiedades/campos que están disponibles.

Solo defines el Schema s y Model s una vez en una aplicación. Entonces, por lo general, cuando se inicia la aplicación, deberá ejecutar el código para definirlos y luego usar el Model instancias según sea necesario a lo largo del ciclo de vida de la aplicación.

Hay muchas más razones por las que querrías usar Mongoose potencialmente.

Sin embargo, tiene toda la razón, podría usar algo más directo, sin un esquema usando el controlador nativo de NodeJS. La sintaxis sería similar a la que mostraste, pero un poco más compleja:

MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
  if(err) { return console.dir(err); }

  var collection = db.collection('kittens');

    collection.find().toArray(function(err, kittens) {
        // here ...
    });    
});

En lugar de lo simple:

Kitten.find(function(err, kittens) {

});

Además, al usar Mongoose, puede encontrar que escribir consultas más complejas es más fácil de escribir y leer:

Kitten.find().where('name', 'Harold').exec(/*callback*/);

Sugeriría leer más documentación para tener una mejor idea del marco y si es una buena opción para sus necesidades. Desafortunadamente, la documentación está un poco dispersa, pero si revisa los subtítulos de la Guide encabezado, tendrá mucha buena información disponible.