Mi esquema se parece a esto:

"content" : [
        {
            "_id" : ObjectId("4fc63de85b20fb72290000f8"),
            "assets" : [
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/I_Understanding_and_Measuring.pdf",
                    "_id" : ObjectId("4fc63def5b20fb722900010e")
                },
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/me.jpg",
                    "_id" : ObjectId("4fc63e4d5b20fb722900015d")
                }
            ],
            "content" : "",
            "name" : "Downloads"
        },
        {
            "_id" : ObjectId("4fc63dfd5b20fb722900012a"),
            "assets" : [
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/me.jpg",
                    "_id" : ObjectId("4fc63e055b20fb7229000147")
                },
                {
                    "path" : "temp/4f840af9565832fa14000002/4f840b1e565832fa14000007/4fc63de85b20fb72290000f7/content/thierry-henry-12-31-11-1.jpg",
                    "_id" : ObjectId("4fc63e525b20fb7229000164")
                }
            ],
            "content" : "",
            "name" : "Bio"
        }
    ],

Puedo recuperar este documento con:

db.presentations.find({'content.assets._id': ObjectId('4fc63def5b20fb722900010e')})`

He intentado lo siguiente para eliminar un documento de los activos de la colección con la línea de abajo, pero fue en vano:

db.presentations.update(
  {'content.assets._id': ObjectId('4fc63def5b20fb722900010e')}, 
  {$pull: {'content.assets': {'_id': ObjectId('4fc63def5b20fb722900010e')}}}
)

Estoy tratando de quitar un elemento de la correspondiente assets de la colección a través de su id. Alguna idea?

1 Comentario

  1. 28

    Que están tan cerca! Recuerde que su ultraperiféricas «contenido» es una matriz de sí mismo. Por tanto, las siguientes 2 carácter cambiar de trabajo, de uso contenido.$.activos dentro de la que el valor de $tirar.

    db.presentations.update(
      {'content.assets._id': ObjectId('4fc63def5b20fb722900010e')}, 
      {$pull: {'content.$.assets': {'_id': ObjectId('4fc63def5b20fb722900010e')}}}
    )

    Zoom adelante.

    • Impresionante! Gracias!
    • No me funciona en mongo 2.2.3 🙁 Solo no hace nada.
    • Gracias! gran trabajo!
    • Gracias hombre que ayudó mucho !
    • Esto funciona si sólo uno de los content elementos contiene un asset con _id: ObjectId('4fc63def5b20fb722900010e'), porque $ sólo coincidirá con la primera ocurrencia. Alguna idea de cómo quitar el elemento de varios content.assets? Thx
    • usted probablemente tiene su solución por ahora, pero: para eliminar varios elementos coincidentes simplemente proporcionar $pull con una condición. Por ejemplo $pull: {content: {$elemMatch: { assets.id:ObjectId('4fc63def5b20fb722900010e') }. Consulte docs.mongodb.com/manual/reference/operator/update/pull/…

Dejar respuesta

Please enter your comment!
Please enter your name here