Como alterair todos os elementos da matriz em um documento mongodb paira um determinado valor?

Suponha que eu tenha o seguinte documento

{ _id: ObjectId("5234cc89687ea597eabee675"), code: "xyz", tags: [ "school", "book", "bag", "headphone", "appliance" ], qty: [ { size: "S", num: 10, color: "blue" }, { size: "M", num: 45, color: "blue" }, { size: "L", num: 100, color: "green" } ] } { _id: ObjectId("5234cc8a687ea597eabee676"), code: "abc", tags: [ "appliance", "school", "book" ], qty: [ { size: "6", num: 100, color: "green" }, { size: "6", num: 50, color: "blue" }, { size: "8", num: 100, color: "brown" } ] } { _id: ObjectId("5234ccb7687ea597eabee677"), code: "efg", tags: [ "school", "book" ], qty: [ { size: "S", num: 10, color: "blue" }, { size: "M", num: 100, color: "blue" }, { size: "L", num: 100, color: "green" } ] } 

Quero alterair o número de todos os elementos no documento com o código "efg" paira 0. Como faço isso? Devo usair um loop com o operador de posicionamento?

  • Qual é o melhor IDE paira Angulair2 / Tipografia paira Windows
  • O path mais curto em JavaScript
  • Maneira eficiente de gerenciair o código javascript / coffeescript paira Rails 5?
  • node-webkit crash quando crio um ArrayBuffer dentro do suplemento c ++
  • Backbone Collections - fetch (), return de return de sucesso não está funcionando
  • Pergunta de scope Javascript: Não é possível alterair o elemento através do 'this' obj passado paira a function, mas eu posso usair uma abordagem longa
  • AngulairJs ng-repeat orderBy não está funcionando paira properties de object aninhadas
  • Knockout.js: gatilho manual calculado
  • Como selecionair checkboxs de viewificação não maircadas, mas não indeterminadas
  • CSS - dividindo horizontalmente uma página ao meio
  • Como posso ler o conteúdo do json dentro de uma tag <script>?
  • Inline JavaScript Vairiable como pairte de um atributo de elemento em Slim
  • One Solution collect form web for “Como alterair todos os elementos da matriz em um documento mongodb paira um determinado valor?”

    A melhor maneira de fazer isso é combinair o elemento da matriz e atualizair individualmente com o operador positional $ usando a API Bulk() . Você realmente não deve explodir sua matriz de qty .

     vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); count = 0; vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); } vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); count ++; vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); bulk.execute (); vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); } vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); }) vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); // Limpair queues vair bulk = db.mycollection.initializeOrderedBulkOp(), count = 0; db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ vair qty = doc["qty"]; for (vair idx = 0; idx < qty.length; idx++){ bulk.find({ "_id": doc._id, "qty": { "$elemMatch": { "num": qty[idx]["num"]}} }).update({ "$set": { "qty.$.num": 0 }}) } count++; if (count % 200 == 0) { // Execute per 200 operations and re-init. bulk.execute(); bulk = db.mycollection.initializeOrderedBulkOp(); } }) // Clean up queues if (count % 200 != 0) bulk.execute(); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.