У меня есть коллекция внизу. Я пытаюсь обновить элемент массива.
Я пытаюсь обновить, если значение lineItem _id равно 1, затем перейдите в список спецификаций и обновите значение характеристики с 900 до 50, если для specName установлено значение «Модель», как вы можете видеть,_id также является массивом.
сбор данных:
{
"_id": "100",
"name": "Campaign",
"status": "Active",
"parts": {
"lineItem": [
{
"_id": [
{
"name": "A",
"value": "1"
}
],
"spec": [
{
"specName": "Brand",
"characteristicsValue": [
{
"value": "500"
}
]
},
{
"specName": "Model",
"characteristicsValue": [
{
"value": "900"
}
]
}
]
},
{
"_id": [
{
"name": "B",
"value": "2"
}
],
"spec": [
{
"specName": "Brand",
"characteristicsValue": [
{
"value": "300"
}
]
},
{
"specName": "Model",
"characteristicsValue": [
{
"value": "150"
}
]
}
]
},
{
"_id": [
{
"name": "C",
"value": "2"
}
]
}
]
}
}
связанное обновление не работает, как я ожидал.
db.Collection.update({"parts.lineItem._id.value" : "1",
"parts.lineItem.spec.specName" : "Model" },{ $set: {
"parts.lineItem.spec.$.characteristicsValue" : "50" } })
РЕДАКТИРОВАТЬ: Каждый _id имеет массив спецификаций. Итак, нам нужно найти _id, а затем перейти к спецификации в массиве _id, найти марку и обновить значение.