MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Puxe e adicione ao mesmo tempo com o mongo


O erro é praticamente o que significa, pois você não pode agir em duas coisas do mesmo "caminho" na mesma operação de atualização. Os dois operadores que você está usando não são processados ​​sequencialmente como você imagina.

Você pode fazer isso com o mais "sequencial" possível com a API de operações "em massa" ou outra forma de atualização "em massa". Dentro da razão, claro, e também no sentido inverso:
var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });

bulk.execute();

Não é uma garantia de que nada mais tentará modificar, mas é o mais próximo que você obterá atualmente.

Veja também o comando raw "update" com vários documentos.