MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gibt es eine Problemumgehung für die maximale bson-Größe von MongoDB?

Eine Sache, die Sie tun können, ist, Ihre eigene MongoDB zu erstellen :-). Mongodb ist eine offene Quelle und die Begrenzung der Größe eines Dokuments ist eher willkürlich, um eine besseres Schemadesign . Sie können einfach diese Zeile<ändern /a> und selber bauen. Seien Sie dabei vorsichtig.

Die einfachste Idee ist, jede kleine Frage in einem anderen Dokument zu haben mit einem Feld, das auf seinen Elternteil verweist.

Eine andere Idee ist, die Anzahl der Dokumente im übergeordneten Dokument zu begrenzen . Nehmen wir an, Sie begrenzen N Elemente, dann sieht der Elternteil so aus:

{
  _id : ObjectId(),
  id : { type: Number, required: true },
  created: { type: Date, default: Date.now },  // you can store it only for the first element
  last_modified: { type: Date, default: Date.now }, // the same here
  data : [{
    id: 65,
    question: {
        test: "some questions",
        answers: [2,5,6]
    }
  }, ... up to N of such things {}
  ]
}

Auf diese Weise können Sie durch Ändern der Nummer N sicherstellen, dass Sie sich in 16 MB BSON befinden. Und um die gesamte Umfrage zu lesen, können Sie

auswählen

db.coll.find({id: the Id you need}) und kombinieren Sie dann die gesamte Umfrage auf der Anwendungsebene. Vergessen Sie auch nicht, Index auf id zu stellen .

Probieren Sie verschiedene Dinge aus, führen Sie einen Benchmark für Ihre Daten durch und sehen Sie, was für Sie funktioniert.