Estoy tratando de almacenar una lista de ObjectIds en un documento como un campo de matriz.¿Cómo maneja Mongo DB un campo de matriz grande?
Entiendo que Mongo DB tiene un límite de tamaño de 4MB para documentos individuales. Por lo tanto, teniendo en cuenta que la longitud de ObjectId es de 12 bytes, un documento debería poder manejar más de 300,000 entradas en un campo de matriz. (Avíseme si el cálculo está desactivado).
Si el número de entradas en la matriz se acerca a ese límite, ¿qué tipo de rendimiento puedo esperar? ¿Especialmente cuando el campo está indexado? ¿Algún problema de memoria?
consultas típicas se vería como a continuación:
Consulta por un único valor
db.myCollection.find(
{
myObjectIds: ObjectId('47cc67093475061e3d95369d')
}
);
Consulta por múltiples valores
db.myCollection.find(
{
myObjectIds: {$in: [ObjectId('47cc67093475061e3d95369d'), ...]}
}
);
agregar un nuevo valor a varios documentos
db.myCollection.update(
{
_id: {$in: [ObjectId('56cc67093475061e3d95369d'), ...]}
},
{
$addToSet: {myObjectIds: ObjectId('69cc67093475061e3d95369d')}
}
);
FYI: en 1.8, el tamaño máximo de documento se ha aumentado a 16 MB, y este límite es un límite suave impuesto por 10gen. Alguien en SO lo expresó mejor: (paráfrasis) El límite se estableció para obligarnos a pensar un poco más sobre nuestro diseño de esquema. –
@Bryan Migliorisi Gracias, me he encontrado con esa publicación y estoy de acuerdo con ser más inteligente sobre el diseño de esquemas. – Jaepil