обновить коллекцию MongoDB с помощью nodejs // throw new TypeError(‘Для обновления документа требуются атомарные операторы’);

#node.js #mongodb

#node.js #mongodb

Вопрос:

итак, я могу создать коллекцию с использованием nodejs / MongoDB, используя этот код

   // create a collection and inserting the object
     dbo.collection('employees').insertOne(myobj, function(err, res) {
  //if there is an error throw error message
    if (err) throw err;
  // print out if collection is created
    console.log(colors.green("Collection created ✓"),'n','n',companyMotto, '-', 
   subDomain,'n','n');
  //close the db
    db.close();
    });
  

я пытаюсь найти код для обновления коллекции в целом, если их коллекция уже существует, используя это

   // create a collection and inserting the object
  dbo.collection('employees').updateOne(myobj, function(err, res) {
  //if there is an error throw error message
    if (err) throw err;
  // print out if collection is updated
    console.log(colors.green("Collection updated ✓"),'n','n',companyMotto, '-', 
   subDomain,'n','n');
  //close the db
    db.close();
    });
  

но я получаю сообщение об ошибке «… throw new TypeError(‘Для обновления документа требуются атомарные операторы’);»
любая помощь будет с благодарностью

Ответ №1:

Если вы хотите создать коллекцию, вам следует просто вызвать createCollection вместо этого. insertOne предназначен для вставки документа в коллекцию и updateOne для обновления определенного документа в коллекции

Update document requires atomic operators означает, что операция обновления не предоставляется. Итак, mongodb не знает, как вы хотите, чтобы документ обновлялся. например $set , чтобы обновить значение, $push поместить значение в массив

Вы можете обратиться к документу nodejs, чтобы узнать, как updateOne он должен вызываться. updateOne(filter, update, options, callback)

См.: https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#updateOne