У меня есть две коллекции: новости и подписки. У каждой новости есть массив строк - «тегов». Каждая подписка также имеет такие «теги».
Новостная лента подписки - это элементы, имеющие все теги, которые есть у подписки, и может быть больше. Подписки на новостную рассылку - это подписки, имеющие какой-либо из тегов этого элемента, но не более.
Когда я хочу получать новости подписки, я делаю такой запрос для Ruby MongoID:
NewsItem.where(:tags.all => @subscribe.tags)
Как я могу получить все подписки на некоторые новости?
Например:
item.tags = ["foo", "bar"]
subscribe1.tags = ["foo"]
subscribe2.tags = ["bar"]
subscribe3.tags = ["foo", "bar"]
subscribe4.tags = ["foo", "bar", "baz"]
item.subscribees должен давать подписки 1..3, но подписка 4 не должна быть включена, потому что у нее есть тег "baz", который не включен в item.tags