#mongodb #mongoose #mongoose-schema
Вопрос:
Я пытаюсь удалить только определенные поля в своем пользовательском документе MongoDB, но я не думаю использовать модель пользователя.deleteOne({_id:id}) было бы недостаточно, так как это удалило бы весь документ, а это не то, что я хочу.
{
"_id": "12345678" ,
"maidenName": null,
"createdAt": "2021-09-16T09:11:55.199Z" ,
"email": "287983@gmail.com",
"firstName": "iam1234",
"lastName": "test14",
"profile": "hello-world.com",
"uid": "SKkZZ3a",
"skills": []
}
Я пытался сделать это UserModel.updateOne({_id:id},{$unset:{email: 1, firstName: 1}});
Этот запрос возвращает
{
n: 0,
nModified: 0,
opTime: {
ts: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1631832363 },
t: 24
},
electionId: 7fffffff0000000000000018,
ok: 1,
'$clusterTime': {
clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1631832363 },
signature: { hash: [Binary], keyId: [Long] }
},
operationTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1631832363 }
}
Я понятия не имею, что это такое! как лучше всего это сделать?
Ответ №1:
Ваш код работает, и это правильный способ сделать это.
(вам не нужно ставить 1, любое значение будет в порядке, например, даже «»)
Это говорит вам о том, что произошло
- n: 0 => соответствующие документы не найдены
- Изменено: 0 => документы не обновлялись
Я думаю, что это фильтр, возможно, простая ошибка, например, неправильный тип идентификатора? Попробуйте найти в одиночку, чтобы посмотреть, сможете ли вы его найти