У меня следующий запрос:
match := bson.D{{"$match", bson.D{{"venue", venueID}}}}
group := bson.D{{"$lookup", bson.M{
"from": "labels",
"localField": "label_ids",
"foreignField": "_id",
"as": "labels",
}}, {"$graphLookup", bson.M{
"from": "menus",
"startWith": "$child_ids",
"connectFromField": "child_ids",
"connectToField": "_id",
"as": "children",
"maxDepth": 5,
"depthField": "level",
}}}
cur, err := m.collection.Aggregate(ctx, mongo.Pipeline{group, match})
У меня есть два реляционных поля, одно из них представляет собой структуру графика (меню), каждый родительский элемент имеет массив идентификаторов для каждого дочернего элемента.
Второе поле, метки, представляет собой запрос типа "один ко многим". Ярлыки и меню должны использоваться повторно, поэтому они не могут быть встроены в единую родительскую сущность. Вышеуказанный запрос имеет смысл для меня, однако я получаю следующую ошибку:
A pipeline stage specification object must contain exactly one field.
Спасибо!