Tengo la colección domain
con documentos que contienen información de dominio. Parte de eso son los registros whois históricos, que pueden ser cero o más y ocupan con mucho la mayoría del espacio para el documento.MongoDB: ¿Guardar un documento reescribe todo el documento?
Si cargué todo el documento, cambio algo pequeño (como actualizar un campo numérico) y uso el método save()
mongo vaciar todo el documento en el disco o solo actualizar el BSON que ha cambiado? En definitiva, mi pregunta es, ¿debería molestarme en complicar mi código con update()
para ahorrar en E/S o debería simplemente usar save()
?
Esto no se debe exclusivamente a la pereza, el documento (después de que se lee en su totalidad) pasa por una serie de pasos para modificar/procesar el documento y si se han realizado cambios se guarda todo el documento. Pero si el costo de guardar el documento es alto, entonces tal vez tenga que pensarlo de otra manera ...
Eso es útil, pero realmente no responde mi pregunta. Si tengo un documento de 10mb BSON, lo leo cambiando una propiedad y guardándola ¿volverá a escribir los 10mb completos? Suponiendo que el documento no tiene que ser reubicado. –
El detalle en * "está escrito en su totalidad" * depende del hecho de que MongoDB utiliza archivos mapeados en memoria. Si solo actualiza una sola propiedad, lo ideal es que solo esos bytes se vacíen en el disco. Sin embargo, si el BSON cambia lo suficiente, entonces * usted * podría terminar descargando todo al disco. –
@GatesVP: pensé que toda la página está marcada como sucia y tiene que enjuagarse. –