В Mongo, как мне сбросить поле на карте внутри массива? - PullRequest
0 голосов
/ 25 ноября 2011

Один из моих документов выглядит так:

{:a [{:b "something", :c "else"}, {:b "more" :c "fun"}]}

Я хочу удалить элемент: b из каждой карты в массиве, но оператор $, похоже, не работает в этом случае. Как это должно быть сделано?

1 Ответ

2 голосов
/ 26 ноября 2011

Похоже, вы столкнулись с проблемой "массива объектов". Когда у вас есть массив объектов, MongoDB не имеет полного набора операций update.

Вот что вы можете сделать. У вас есть доступ к a.0.b и a.1.b. Они получат доступ к первому и второму элементам в массиве. Так что вы можете сделать что-то вроде:

db.coll.update({_id:"yourid"}, {$unset: {'a.0.b':1,'a.1.b':1}})

Однако вам нужно будет сгенерировать правильный запрос для каждого документа. Некоторые документы могут иметь 2 элемента в массиве, некоторые могут иметь 10. Поэтому здесь определенно требуется дополнительное программирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...