findOneAndUpdate обновляет неверный документ

Я пытаюсь обновить документ с помощью findOneAndUpdate(). Однако документ с другим идентификатором обновляется.

Код, как показано ниже:

      async function updateDocument(id){
    const result = await Collection1_class.findOneAndUpdate(id,{
        $set : { author : 'John'}
    }, { new : true});    
    console.log(result);
}
updateDocument('5a6900fff467be65019a9001');

Выход такой, как показано ниже:

      Connected to database1
{
  tags: [ 'aspnet', 'backend' ],
  _id: 5a68fde3f09ad7646ddec17e,
  date: 2018-01-24T21:42:59.605Z,
  name: 'ASP.NET MVC Course',
  author: 'John',
  isPublished: true,
  price: 15,
  __v: 0
}

1 ответ

Если вы запрашиваете id возможно, вам придется преобразовать его в ObjectId мангуста.

      let newObjectId = mongoose.Types.ObjectId(id); 
const result = await Collection1_class.findOneAndUpdate({ '_id' : newObjectId } ,{
        $set : { author : 'John'}
    }, { new : true}); 

Также есть findByIdAndUpdate. При использовании findByIdAndUpdate ваш запрос становится:

      const result = await Collection1_class.findByIdAndUpdate(id ,{
        $set : { author : 'John'}
    }, { new : true}); 

Другие вопросы по тегам