Is there a chance I can query the MongoDB record using findOneAndUpdate
, or findByIdAndUpdate
by triggering the record by the "ID"
and "lang"
fields? Here is the database object sample:
{
"id": "61842e6fb19afbc0922f5505",
"locales": [
{
"lang": "ru",
"title": "Тестовый десерт",
"description": "тестовый"
},
{
"lang": "lv",
"title": "Testu deserts",
"description": "Testu descriptions"
},
{
"lang": "en",
"title": "Test dessert",
"description": "Test description"
}
]
}
And this is how I attempt to trigger, and it doesn't work:
const filter = {
_id: id,
locales: {
lang: lang
}
}
const product = await Product.findOneAndUpdate(filter, {
lang: {
title,
description,
price
}
}, { new: true });
CodePudding user response:
You can use the $set
operator like that:
const product = await Product.findOneAndUpdate({
_id: "61842e6fb19afbc0922f5505",
"locales.lang": "ru"
},
{
"$set": {
"locales.$": {
lang: "ru",
title: "title",
description: "desription",
price: 23
}
}
})
Working playground: https://mongoplayground.net/p/oBNS6wtK50g