Фон
У меня есть коллекция монго теги :
...
{ "_id" : 901, "tagkey" : "color", "tagvalue" : "black" }
{ "_id" : 902, "tagkey" : "color", "tagvalue" : "white" }
{ "_id" : 903, "tagkey" : "store", "tagvalue" : "supercenter" }
{ "_id" : 904, "tagkey" : "store", "tagvalue" : "gas station" }
...
И еще одна коллекция предметов :
...
{ "_id" : 12, "itemname" : "truck", "tags" : [901] }
{ "_id" : 13, "itemname" : "ink", "tags" : [901, 903] }
{ "_id" : 14, "itemname" : "paper", "tags" : [902, 903] }
{ "_id" : 14, "itemname" : "gas", "tags" : [904] }
...
Я пытаюсь попросить все предметы, которые есть в магазине.Это означает, что я хочу получить список всех элементов , имеющих тег с именем ключа: "store".Итак, я вывожу все item s, содержащие 903 или 904 в их списке тегов.Итак, я должен получить список, содержащий чернила, бумагу и газ.
Вопрос
Как использовать вывод из $match
одной таблицы в качестве значения длямой следующий запрос?
Моя ближайшая догадка
db.tags.aggregate (
{$match: {tagkey: "store"}}, # now I have a list of all the tag items
{$match: {tags: {$elemMatch: {$in :[****]} } }} ) #Here I need to run the match query on a different collection and match the tags element to one of the _ids from the first match
)
Более конкретные вопросы
- Как мне получитьвторой
$match
для ссылки на другую коллекцию - Как получить, что этот массив элементов является _ids вывода первого
$match