Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-53707

updateMany with pipeline throws an error while update with pipeline and multi flag doesn't

    • Type: Icon: Question Question
    • Resolution: Works as Designed
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      When I'm trying to run updateMany() in the following way, my server returns an error:

      db.collection.updateMany(
        <query>,
        <pipeline>
      );
      

      Error: Error: the update operation document must contain atomic operators.

      When I'm using update() instead, it works. Using it like so:

      db.collection.update(
        <query>,
        <pipeline>,
        {
          multi: true
        }
      );
      

      I tried in on version 4.2 and 4.4 - no difference. The exact code looks like this:

      Doesn't work:

      db.getCollection("testsets").updateMany(
          { properties: { $exists: true } }, 
          [
              { $set: { "documentProperties.documentCategory": "$properties.documentCategory",  "documentProperties.pageCategories": "$properties.pageCategories"} },
              { $unset: ["properties.documentCategory", "properties.pageCategories"] }
          ]
      );
      

      Works:

      db.getCollection("testsets").update(
          { properties: { $exists: true } }, 
          [
              { $set: { "documentProperties.documentCategory": "$properties.documentCategory",  "documentProperties.pageCategories": "$properties.pageCategories"} },
              { $unset: ["properties.documentCategory", "properties.pageCategories"] }
          ],
          {
              multi: true,
          }
      );
      

      Error:

      2021-01-12T09:36:56.413+0100 E QUERY    [js] Error: the update operation document must contain atomic operators :
      DBCollection.prototype.updateMany@src/mongo/shell/crud_api.js:625:1
      @(shell):1:1
      

      Thanks!

            Assignee:
            dmitry.agranat@mongodb.com Dmitry Agranat
            Reporter:
            dominikvoss@mailbox.org Dominik Voss
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: