Pregunta

Mi doc es como este

"page_elements" : [
        {
                "type" : "gallery",
                "words" : [
                        "gallery",
                        "photos"
                ]
        },
        {
                "type" : "cart",
                "words" : [
                        "cart",
                        "shop"
                ]
        },
        {
                "type" : "Privacy",
                "words" : [
                        "privacy",
                        "policy",
                        "privacy policy"
                ]
        },
        {
                "type" : "cart",
                "words" : [
                        "cart",
                        "shopping cart",
                        "buy now",
                        "add to cart",
                        "add to basket"
                ]
        }

por error, he actualizado carro dos veces.ahora, tengo que quitar el primer carrito de la compra en la matriz y mantener el resto del documento.

Aquí, debo eliminar

{
    "type" : "cart",
    "words" : [
        "cart",
        "shop"
    ]
}

He intentado esto..

db.ds_master_language_words.remove( { "page_elements.type" : "cart" } )
¿Fue útil?

Solución

No quieres eliminar, quieres actualizar. $ unset se deshará del campo y conoce la posición:

db.ds_master_language_words.update(
    { <your_document_id_match > },
    { $unset: { "page_elements.1": ""}}
)

que se ajustará a null en la matriz, pero ahora es fácil de quitar con $ Pull :

db.ds_master_language_words.update(
    { <your_document_id_match > },
    { $pull: { "page_elements": null }}
)

También vea la documentación para el método update

http://docs.mongodb.org/manual/reference/method/db.collection.update/

Otros consejos

Usted puede hacer esto con $pull dándole un page_elements valor que coincide con el elemento de la matriz a quitar:

db.ds_master_language_words.update({}, {
    $pull: {page_elements: {
       "type": "cart",
       "words": ["cart", "shop"]
    }}})
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top