MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

consultando uma coleção sem passar o esquema no mangusto


Na página inicial do Mongoose:

O Mongoose fornece uma solução direta e baseada em esquema para modelar seus dados de aplicativo e inclui conversão de tipos, validação, construção de consultas, ganchos de lógica de negócios e muito mais, prontos para uso.

O Mongoose não pode inferir um esquema de uma coleção de documentos potencialmente exclusivos. O MongoDB não impõe esquema nos documentos armazenados em uma coleção.

Então, o Mongoose adiciona uma camada no driver nativo do NodeJS (aqui) que muitos acham mais produtivo. Não é um requisito para usar com o MongoDB ao usar o Node.JS.

O Mongoose precisa fundamentalmente de duas coisas para funcionar:
  1. Esquema ==define a estrutura do documento (referência). Você pode adicionar validação, novos métodos, adicionar propriedades virtuais, usar tipos de dados, estabelecer referências a outras coleções (modelos).
  2. Model ==esta é a classe que é usada em tempo de execução para expressar consultas em coleções (referência). Uma definição de esquema é usada para construir um modelo.

Então, como você viu no exemplo que você colou, há um gatinho Schema definido e, em seguida, um Model Kitten é criado. O que é bom em usar um esquema e modelo é que o Mongoose impõe as propriedades/campos que estão disponíveis.

Você só define o Schema se Model s uma vez em um aplicativo. Portanto, geralmente quando o aplicativo é iniciado, você precisará executar o código para defini-los e, em seguida, usar o Model instâncias conforme necessário durante todo o ciclo de vida do aplicativo.

Há muitas outras razões pelas quais você deseja usar o Mongoose potencialmente.

Você está absolutamente certo, porém, você poderia usar algo mais direto, sem um esquema, usando o driver nativo do NodeJS. A sintaxe seria semelhante à que você mostrou, mas um pouco mais complexa:
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 ...
    });    
});

Ao invés do simples:
Kitten.find(function(err, kittens) {

});

Além disso, ao usar o Mongoose, você pode descobrir que escrever consultas mais complexas é mais fácil de escrever e ler:
Kitten.find().where('name', 'Harold').exec(/*callback*/);

Eu sugiro ler mais da documentação para ter uma ideia melhor da estrutura e se ela é uma boa combinação para suas necessidades. A documentação está um pouco espalhada, infelizmente, mas se você percorrer os subtítulos do Guide título, você terá um monte de boas informações disponíveis.