Я новичок в 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 или анализе набора результатов, но я не знаю, является ли это правильным способом решения проблемы. Возможно, есть встроенная функция, которая решает ее более эффективно.
Спасибо!