MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

odpytywanie kolekcji bez przekazywania schematu w manguście

Ze strony głównej Mongoose:

Mongoose zapewnia proste, oparte na schemacie rozwiązanie do modelowania danych aplikacji i zawiera wbudowane rzutowanie typów, walidację, budowanie zapytań, zaczepy logiki biznesowej i nie tylko.

Mongoose nie może wywnioskować ze zbioru potencjalnie unikalnych dokumentów schematu. MongoDB nie wymusza schematu na dokumentach przechowywanych w kolekcji.

Tak więc Mongoose dodaje warstwę na natywnym sterowniku NodeJS (tutaj), którą wielu uważa za bardziej produktywną. Nie jest to jednak wymagane do używania z MongoDB podczas korzystania z Node.JS.

Mongoose do działania potrzebuje dwóch rzeczy:

  1. Schema ==definiuje strukturę dokumentu (odniesienie). Możesz dodać walidację, nowe metody, dodać wirtualne właściwości, użyć typów danych, ustanowić odniesienia do innych kolekcji (modeli).
  2. Model ==jest to klasa, która jest następnie używana w czasie wykonywania do wyrażania zapytań dotyczących kolekcji (odniesienie). Definicja schematu służy do budowania modelu.

Tak więc, jak zauważyłeś w wklejonej próbce, jest kotek Schema zdefiniowany, a następnie Model Kitten jest tworzone. Fajne w korzystaniu ze schematu i modelu jest to, że Mongoose następnie wymusza dostępne właściwości/pola.

Definiujesz tylko Schema s i Model s raz w aplikacji. Tak więc, zwykle podczas uruchamiania aplikacji, musisz wykonać kod, aby je zdefiniować, a następnie użyć Model instancje zgodnie z potrzebami w całym cyklu życia aplikacji.

Istnieje wiele innych powodów, dla których chciałbyś potencjalnie użyć Mongoose.

Masz jednak całkowitą rację, możesz po prostu użyć czegoś bardziej bezpośredniego, bez schematu, używając natywnego sterownika NodeJS. Składnia byłaby podobna do tej, którą pokazałeś, ale nieco bardziej złożona:

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 ...
    });    
});

Zamiast prostego:

Kitten.find(function(err, kittens) {

});

Ponadto podczas korzystania z Mongoose może się okazać, że pisanie bardziej złożonych zapytań jest łatwiejsze do pisania i czytania:

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

Sugeruję przeczytanie większej ilości dokumentacji, aby lepiej wyczuć framework i czy jest dobrze dopasowany do twoich potrzeb. Dokumentacja jest niestety trochę rozproszona, ale jeśli przejrzysz podnagłówki Guide nagłówek, będziesz mieć dostęp do wielu dobrych informacji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb z FastAPI

  2. Różnica między .save() a użyciem update()

  3. Jak ustawić objętość danych docker mongo

  4. Pymongo / MongoDB:utworzyć indeks czy zapewnić indeks?

  5. Jakie parametry są przekazywane do wywołań zwrotnych Mongoose