sql >> Base de Datos >  >> NoSQL >> MongoDB

Tire y agregue aset al mismo tiempo con mongo

El error es más o menos lo que significa, ya que no puede actuar sobre dos cosas de la misma "ruta" en la misma operación de actualización. Los dos operadores que está utilizando no procesan secuencialmente como podría pensar.

Sin embargo, puede hacer esto de la forma más "secuencial" que pueda obtener con la API de operaciones "masivas" u otra forma de actualización "masiva". Dentro de lo razonable, por supuesto, y también a la inversa:

var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });

bulk.execute();

No es una garantía de que nada más intente modificar, pero es lo más cercano que obtendrá actualmente.

También vea el comando "actualizar" sin formato con varios documentos.