Возможно, это популярный вопрос, но мне не удалось найти мое решение. У меня есть коллекция с элементами, как следующее:
_id: ObjectId("52821d6c21c495b30a000015")
structure: {
elements: [{
id: "non-unique-id1",
other_data: "value"
subs: [{
id: 1,
field1: "somevalue",
field2: "other value"
}, {
id: 2,
field1: "somevalue",
field2: "other value"
}, {
id: 3,
field1: "somevalue",
field2: "other value"
}]
}, {
id: "non-unique-id2",
subs: [{
id: 1,
field1: "somevalue",
field2: "other value"
}, {
id: 2,
field1: "somevalue",
field2: "other value"
}, {
id: 3,
field1: "somevalue",
field2: "other value"
}]
}]
}
Теперь я хотел бы, чтобы удалить элемент из подлодок подмассива учитывая его идентификатор. Я хочу, чтобы удаление произошло на всех element
полях.
Я попытался следующим, но даже если я не получаю ошибки, ничего не происходит:
db.objects.update({
"_id" : ObjectId("52821d6c21c495b30a000015")
},{
$pull: {
"structure.elements.subs": {id: 2}
}
})
Это должно быть удалены 2 вхождений хэша с id: 2
Попробованной $pullAll
как хорошо, но я m Получение ошибки:
Modifier $pushAll/pullAll allowed for arrays only
Любые идеи о том, как я могу достичь своей цели?
Хм, я боялся, что .. К сожалению, массив 'elements' не упорядочен и не исправлен, поэтому я не знаю, какие индексы должны быть нацелены. Спасибо, в любом случае. – Oktav