Uma coisa que você pode fazer é construir seu próprio mongoDB :-). Mongodb é uma fonte aberta e a limitação sobre o tamanho de um documento é bastante arbitrária para impor um melhor design de esquema . Você pode apenas modificar esta linha e construí-lo para si mesmo. Tenha cuidado com isso.
A ideia mais direta é ter cada pequena pergunta em um documento diferente com um campo que faz referência ao seu pai.
Outra ideia é limitar o número de documentos no pai . Digamos que você limite é N elementos, então o pai se parece com isso:
{
_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 {}
]
}
Dessa forma, modificando o número N, você pode ter certeza de que estará em 16 MB de BSON. E para ler toda a pesquisa você pode selecionar
db.coll.find({id: the Id you need})
e, em seguida, combinar toda a pesquisa no nível do aplicativo. Também não se esqueça de garantirIndex em id
. Experimente coisas diferentes, faça um benchmark em seus dados e veja o que funciona para você.