Предполагая, что это структура вашего документа,
{
"_id" : ObjectId("5f2ae5a4b1549ac0460920dd"),
"projectName" : "A",
"project" : [
{
"companyName" : "T1",
"contactPerson" : {
"work_email" : "t1@gmail.com"
}
},
{
"companyName" : "T2",
"contactPerson" : {
"work_email" : "t2@gmail.com"
}
}
]
}
Если вы знаете, что email
будет уникальным и вы хотите обновить одиночный документ, затем используйте updateOne()
.
- первая часть запроса для поиска условия, электронная почта
t1@gmail.com
- вторая часть установки / обновления, здесь
$
для массива, потому что project
- это массив, обновите companyName
до T1 Company
await ClientManagers.updateOne(
{ 'project.contactPerson.work_email': 't1@gmail.com' },
{
$set: { "project.$.companyName": "T1 Companmy" }
}
)
Если email
не является уникальным и хотите обновлять везде, тогда используйте updateMany()
, он обновит все соответствующие документы.
await ClientManagers.updateMany(
{ 'project.contactPerson.work_email': 't1@gmail.com' },
{
$set: { "project.$.companyName": "T1 Company" }
}
)
Не предлагая использовать метод update () , потому что он устарел в понедельник goose и выдаст Предупреждения об устаревании , эта функция заменяется методами updateOne()
, updateMany()
и replaceOne()
.