Давайте предположим следующую схему:MongoDB: Upserting и Суб документы
{
'_id' : 'star_wars',
'count' : 1234,
'spellings' : [
{ spelling: 'Star wars', total: 10},
{ spelling: 'Star Wars', total : 15},
{ spelling: 'sTaR WaRs', total : 5} ]
}
я могу обновить количество и один из вариантов написания, делая это:
db.movies.update(
{_id: "star_wars",
'spellings.spelling' : "Star Wars" },
{ $inc :
{ 'spellings.$.total' : 1,
'count' : 1 }}
)
Но эта форма обновления Безразлично» t работать с upsert. то есть, если я пытаюсь обновить (с upsert) с _id, который не существует, или с орфографией, которая еще не существует, ничего не происходит.
Есть ли решение, которое позволяет мне обновлять при обновлении ($ inc) поддоку?
Спасибо!
Показать запрос с 'upsert', который не работает, поэтому мы можем помочь вам. Если вы используете указанный выше запрос с опцией 'upsert', то не будет определено' 'новая орфография', поэтому, в конце концов, она не добавит. Он просто обновит существующие варианты написания – Schaliasos
Я пробовал вышеуказанный запрос с опцией upsert. Есть ли другой способ написать его? Я в основном хочу обновить «count» и «total» для определенной орфографии (с +1 каждым), но с upsert (то есть, если будет создан целый документ, если _id не сопоставлен или под-документ будет создается, если _id соответствует, но конкретного написания не существует). –
Возможный дубликат критерия соответствия элементов Upsert Array в документе MongoDB?] (Http://stackoverflow.com/questions/8871363/upsert-array-elements-matching-criteria-in-a-mongodb-document) – WiredPrairie