sql >> Database >  >> NoSQL >> MongoDB

MongoDB-query op ingevulde velden

Het antwoord is om je schema te wijzigen.

Je bent in de val gelopen die veel ontwikkelaars voor je hebben gehad toen ze begonnen met het ontwikkelen van documentdatabases vanuit een geschiedenis van het gebruik van relationele databases:MongoDB is geen relationele database en zou niet als een database moeten worden behandeld.

U moet stoppen met denken aan externe sleutels en perfect genormaliseerde gegevens en in plaats daarvan elk document zo op zichzelf staand mogelijk houden, en nadenken over hoe u relevante bijbehorende gegevens het beste in uw documenten kunt insluiten.

Dit betekent niet dat je ook geen associaties kunt onderhouden. Het kan een structuur als deze betekenen, waarin u alleen noodzakelijke details insluit en indien nodig naar het volledige record vraagt:

var activitySchema = new mongoose.Schema({
  event: {
    _id: { type: ObjectId, ref: "Event" },
    name: String,
    private: String
  },

  // ... other fields
});

Het heroverwegen van uw insluitstrategie zal zeer vereenvoudig uw zoekopdrachten en beperk het aantal zoekopdrachten tot een minimum. populate zal uw telling snel opblazen, en naarmate uw dataset groeit, zal dit zeer waarschijnlijk een probleem worden.



  1. java.lang.IncompatibleClassChangeError:klasse Mongo implementeren

  2. Hoe kan ik meerdere documenten tegelijk opslaan in Mongoose/Node.js?

  3. Redis versus MongoDB

  4. Redis Sentinels met TLS