В моем документе есть следующая структура:
{
_id : ObjectId("43jh4j343j4j"),
array : [
{
_arrayId : ObjectId("dsd87dsa9d87s9d7"),
someField : "something",
someField2 : "something2"
},
{
_arrayId : ObjectId("sds9a0d9da0d9sa0"),
someField : "somethingElse",
someField2 : "somethingElse2"
}
]
}
Я хочу обновить someField и someField2, но только для одного из элементов массива, того, который соответствует _arrayId (например, _arrayId : ObjectId("dsd87dsa9d87s9d7")
; и только для этого документа (например, _id : ObjectId("43jh4j343j4j")
) и ни для какого другого.
Массив arrayIds не является уникальным для документа, поэтому мне нужно, чтобы он был для конкретного документа. Я мог бы использовать позиционный оператор $
, если бы хотел обновить это значение в массиве для каждого документа, в котором оно существует, но это не то, что мне нужно.
Я пытаюсь сделать это в java, но решение из командной строки тоже подойдет.