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});