sql >> Database >  >> NoSQL >> MongoDB

een verzameling opvragen zonder het schema in mangoest door te geven

Van de Mongoose-startpagina:

Mongoose biedt een ongecompliceerde, op schema's gebaseerde oplossing voor het modelleren van uw toepassingsgegevens en omvat ingebouwde typecasting, validatie, het bouwen van query's, bedrijfslogica-haken en meer, kant-en-klaar.

Mongoose kan uit een verzameling potentieel unieke documenten geen schema afleiden. MongoDB dwingt geen schema af op de documenten die in een verzameling zijn opgeslagen.

Dus, Mongoose voegt een laag toe aan de NodeJS native driver (hier) die velen productiever vinden. Het is echter geen vereiste om te gebruiken met MongoDB bij gebruik van Node.JS.

Mongoose heeft twee dingen nodig om te werken:

  1. Schema ==dit definieert de documentstructuur (referentie). U kunt validatie, nieuwe methoden toevoegen, virtuele eigenschappen toevoegen, gegevenstypen gebruiken, verwijzingen naar andere collecties (modellen) maken.
  2. Model ==dit is de klasse die vervolgens tijdens runtime wordt gebruikt om query's op verzamelingen (referentie) uit te drukken. Een Schemadefinitie wordt gebruikt om een ​​Model te bouwen.

Dus, zoals je zag in het voorbeeld dat je geplakt hebt, is er een kitten Schema gedefinieerd, en vervolgens een Model Kitten is gecreëerd. Wat leuk is aan het gebruik van een schema en model, is dat Mongoose vervolgens de beschikbare eigenschappen/velden afdwingt.

U definieert alleen het Schema s en Model s een keer in een applicatie. Dus, meestal als de applicatie start, moet je code uitvoeren om ze te definiëren, en dan het Model gebruiken instanties indien nodig gedurende de levenscyclus van de toepassing.

Er zijn nog veel meer redenen waarom u Mongoose mogelijk zou willen gebruiken.

Je hebt echter helemaal gelijk, je zou gewoon iets directers kunnen gebruiken, zonder schema, door de native driver van NodeJS te gebruiken. De syntaxis zou vergelijkbaar zijn met wat u liet zien, maar een beetje ingewikkelder:

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

In plaats van het simpele:

Kitten.find(function(err, kittens) {

});

En als je Mongoose gebruikt, merk je misschien dat het schrijven van complexere zoekopdrachten gemakkelijker te schrijven en te lezen is:

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

Ik raad aan om meer documentatie door te lezen om een ​​beter idee te krijgen van het raamwerk en of het goed aansluit bij uw behoeften. De documentatie is helaas een beetje verspreid, maar als je de subkoppen van de Guide doorneemt rubriek, heb je veel goede informatie beschikbaar.



  1. mongodb vinden door veldwaarden te vergelijken

  2. Wat is de beste manier om datums op te slaan in MongoDB?

  3. gebruikt voor mongodb ObjectId aanmaaktijd

  4. het MongoDB-cachesysteem begrijpen