He añadido MiddleName atributo a mi objeto de Cliente. El cliente es un Objeto simple() de la instancia. Quiero quitar este atributo de mi objeto. ¿Cómo puedo hacer eso? Estoy usando MongoDb Consola interactiva.

  • Encontró la respuesta => eliminar cliente.MiddleName
InformationsquelleAutor johndoe | 2010-10-07

1 Comentario

  1. 57

    Usted debe utilizar los $unset modificador mientras actualización:

    Eliminar: (más reciente de la sintaxis)
    https://docs.mongodb.com/manual/reference/method/db.collection.update/

    db.collection.update(
        {},
        { 
            $unset : { 
                "properties.service" : 1 
            } 
        },
        {
            multi: true
        }
    );

    Actualizado gracias a Xavier Guihot comentario!

    Eliminar: (sólo a la izquierda para tener una referencia de la sintaxis antigua)

    //db.de la colección.actualización( criterios, objNew, upsert, multi )

    db.collection.update( 
        { 
            "properties.service" : { 
                 $exists : true 
             } 
        }, 
        { 
             $unset : { 
                 "properties.service" : 1 
             } 
        }, 
        false, 
        true
    );

    Para comprobar que se han eliminado puede utilizar:

    db.collection.find( 
        { 
            "properties.service" : { 
                $exists : true
             } 
        } 
    ).count(true);

    Recuerde usar la opción múltiple como true si desea actualizar varios registros.
    En mi caso, quería eliminar las propiedades.atributo de servicio de todos los registros de esta colección.

    • he de ejecutar este comando en una db de alla de 20 millones de registros. Su estado de 14 minutos ya. Eliminar un campo.
    • Sí, no estoy sorprendido. Puedes sugerir una mejor manera para que una base de datos diseñada para ser un esquema libre?
    • El argumento de la firma de la db.de la colección.actualización fue el cambio en 2.2 : docs.mongodb.org/manual/reference/method/db.collection.update
    • Tenga en cuenta que la comprobación de si el campo existe, no es necesario: db.collection.update({}, { $unset: { "properties.service": 1 } }, { multi: true })

Dejar respuesta

Please enter your comment!
Please enter your name here