Я недавно использую MongoDB, и я не знаю, как решить следующую проблему:
У меня есть такая коллекция документов:
{
"URL": "www.stackoverflow.com",
"TAGS": [
{"NAME": "question", "VOTES": 3},
{"NAME": "answer", "VOTES": 5},
{"NAME": "problem", "VOTES": 2}
]
}
Прежде всего, я хотел, чтобы все URL-адреса имели все теги, приведенные в списке.
Я решил это с помощью запроса:
db.links.find( { "Tags.Name" : { $all: ["question","answers"] } } );
Но этот запрос возвращает весь правильный документ, состоящий только из правильного документа только с тегами, которые я запросил.
Результат, который я ищу:
{
"URL": "www.stackoverflow.com",
"TAGS": [{"NAME": "question", "VOTES": 3},
{"NAME": "answer", "VOTES": 5}]
}
а не:
{
"URL": "www.stackoverflow.com",
"TAGS": [{"NAME": "question", "VOTES": 3},
{"NAME": "answer", "VOTES": 5},
{"NAME": "problem", "VOTES": 2}]
}
Потому что я спрашивал только о тегах ["вопрос", "ответы"].
Я думал об использовании MapReduce или разборе набора результатов, но я не знаю, является ли это правильным способом решения проблемы. Может быть, есть встроенная функция, которая решает ее более эффективно.
Спасибо!