Estoy buscando la forma correcta de eliminar todos los elementos de una matriz de campo (a través de todos los documentos) en Mongodb – estos parecen ser equivalentes, por lo que se recomienda: (o tal vez de alguna otra manera?)

db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true} )

o

db.collection.update({}, { $set : {'myArray': [] }} , {multi:true} )
InformationsquelleAutor UpTheCreek | 2013-07-25

3 Comentarios

  1. 27

    La $set variante será más rápido ya que el $pull tendrá que hacer los cálculos con matrices. Realmente no estoy seguro si funcionará, ya que realmente no está en la eliminación de alguno de los elementos con su consulta.

  2. 3

    Sólo para asegurarse, usted necesita para guardar un array vacío? Porque de lo contrario, es probable que sea mejor $unset ella.

    Si usted debe mantener una matriz vacía, yo creo que su $pull llamada no funciona – me pensar le van a quitar todos los elementos vacíos de su matriz, no todos los elementos.

  3. 3

    De acuerdo a Mongodb oficial del documento:

    Cuando se utiliza con $ para que coincida con el elemento del array, $unset sustituye a la
    elemento coincidente con null en lugar de quitar el elemento coincidente
    de la matriz. Este comportamiento se mantiene constante el tamaño de la matriz y
    elemento de posiciones.

    Los $debe ser la forma correcta.

Dejar respuesta

Please enter your comment!
Please enter your name here