Para la copia de seguridad de producción, MongoDB recomienda mongodump en lugar de mongoexport para la precisión de los datos. Sin embargo, necesitaría "borrar" datos de una base de datos MongoDB antes de hacer una copia de seguridad. No conozco ninguna opción de depuración de datos del lado del servidor que no sea mongoexport . Dos preguntas:
- ¿ Mongoexport accede a la memoria caché MongoDB en RAM? ¿ Alteraría el conjunto de trabajo en RAM como lo hace mongodump ?
- El comando mongodump tiene esta opción --query . "Proporciona un documento JSON como una consulta que opcionalmente limita los documentos incluidos en la salida de mongodump". ¿Se necesita una consulta para excluir ciertos campos en un documento?
mongodump
copia de seguridad de la instantánea normal o del sistema de archivos, o escribir una exportación personalizada simongoexport
no hace lo que necesita. Cualquier herramienta o programa que lea datosmongod
podría alterar su conjunto de trabajo si sus datos para exportar son mayores que la RAM disponible. Las instantáneas del sistema de archivos son menos perjudicialesRespuestas:
Como respuesta a su primera pregunta, ambas herramientas (por defecto) simplemente recorrerán el
_id
índice para obtener los datos y luego los escribirán en el disco. Entonces, sí, ambas herramientas impactarán de manera similar en su conjunto de trabajo, por lo que generalmente recomendaría ejecutarlas en un secundario (preferiblemente un secundario oculto si es posible). Haré eco de Stennie en los comentarios aquí y recomendaré otros métodos de respaldo si se trata de grandes cantidades de datos.Para la segunda pregunta, supongo que está buscando un
mongodump
equivalente de la--fields
opción demongoexport
solo volcar campos específicos. La opción de consulta se puede usar para filtrar resultados, pero no se puede usar con una proyección (para seleccionar los campos devueltos): esta es una solicitud de función que se está rastreando en TOOLS-28 pero aún no está programada. Como también mencionó Stennie, la otra opción aquí es escribir un exportador personalizado que se ajuste a sus necesidades (y de nuevo, aún recomendaría ejecutarlo en un secundario para proteger su conjunto de trabajo).fuente
(lo siento, no sé)
- consulta seleccionará o excluirá documentos completos, no campos.
Sin embargo, sería una buena idea:
fuente
Mongoexport realmente preserva los tipos, pero hace que los datos sean inconsistentes. Si está exportando un campo con Ints y Longs, lo exportará como objetos Números y JSON respectivamente, lo que puede dificultar el camino.
"Modo estricto. Las representaciones de modo estricto de los tipos BSON se ajustan al RFC de JSON. Cualquier analizador JSON puede analizar estas representaciones de modo estricto como pares clave / valor; sin embargo, solo el analizador JSON interno de MongoDB reconoce la información de tipo transmitida por el formato".
https://docs.mongodb.com/manual/reference/mongodb-extended-json/
fuente