Una cosa che puoi fare è costruire il tuo mongoDB :-). Mongodb è un source aperto e la limitazione delle dimensioni di un documento è piuttosto arbitraria per imporre un migliore progettazione dello schema . Puoi semplicemente modificare questa riga e costruiscilo per te. Stai attento con questo.
L'idea più semplice è quella di avere ogni piccola domanda in un documento diverso con un campo che fa riferimento al suo genitore.
Un'altra idea è quella di limitare il numero di documenti nel genitore . Diciamo che il limite è N elementi, quindi il genitore appare così:
{
_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 {}
]
}
In questo modo modificando il numero N puoi assicurarti di essere in 16 MB di BSON. E per leggere l'intero sondaggio puoi selezionare
db.coll.find({id: the Id you need})
e quindi combinare l'intero sondaggio a livello di applicazione. Inoltre, non dimenticare di garantireIndex su id
.
Prova diverse cose, fai un benchmark sui tuoi dati e guarda cosa funziona per te.