Быстрый поиск связанных тегов в MongoDB - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть два набора документов:

Wikis и WikiTags.Так как я хочу гибкое редактирование имен тегов, я не хочу вставлять сам тег в вики-документ.Итак, я храню список wiki_tag_ids внутри вики-документа.

Интересно, как лучше всего найти связанные теги, используя эту схему.Под связанными тегами я подразумеваю теги, которые существуют в других вики с тегами выбранных тегов.

Может быть, мне следует хранить связанные теги в документе WikiTag?

1 Ответ

1 голос
/ 03 апреля 2011

Я предлагаю вам сохранить магазин WikiTag в документе Wiki.Mongodb позволяет легко обновлять, удалять отдельный документ из вложенной коллекции, что означает «гибкое редактирование имен тегов».

Коллекция выглядит так:

wikis 
  {
    _id,
    wikiTags {_id, name, ...},
    ...
  }

Так, например, если вы хотите обновить вложенныеИмя WikiTag с id = SomeTagId вы можете:

db.wikis.update( {'wikiTags.id':SomeTagId},
                 {$set:{'wikiTags.$.name':"New Tag Name"}},
                  false, 
                  true )

Если вы хотите удалить элемент из вложенного массива, вы должны использовать $ unset , добавить новый элемент: $ push, $ addToSet

Итак, я думаю, теперь вы видите, что любая операция с вложенным массивом может быть выполнена легко.И если производительность является проблемой - используйте встраивание.

Надеюсь, это поможет.

...