У меня проблема с использованием поиска в массиве объектов.
Моя структура
type MerchantList struct {
MerchantID bson.ObjectId `json:"merchantId,omitempty" bson:"merchantId,omitempty"`
Merchant *Merchant `json:"merchant,omitempty" bson:"merchant,omitempty"`
MerchantRevenue float64 `json:"merchantRevenue" bson:"merchantRevenue"`
MerchantFee int `json:"merchantFee,omitempty" bson:"merchantFee,omitempty"`
}
type Weeks struct {
ID bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty" description:"Object ID"`
MerchantList []*MerchantList `json:"merchantList,omitempty" bson:"merchantList,omitempty"`
CreatedAt int64 `json:"createdAt" bson:"createdAt" description:"Created date."`
UpdatedAt int64 `json:"updatedAt" bson:"updatedAt" description:"Updated date."`
}
У меня есть коллекция, структурированная следующим образом:
{
"_id" : ObjectId("5af8bdb20b0aa02928514a00"),
"name" : "Week 1",
"merchantList" : [
{
"merchantId" : ObjectId("5ad79c500b0aa07ed040fe4b"),
"merchantRevenue" : 126500.0,
"merchantFee" : 25
}
]
}
Мой запрос:
pipe := []bson.M{
{"$unwind": bson.M{
"path": "$merchant.merchantList",
"preserveNullAndEmptyArrays": true}},
{"$lookup": bson.M{
"from": "merchant",
"localField": "merchantList.merchantId",
"foreignField": "_id",
"as": "merchant",
}},
}
Я бы ожидал выхода из программы примерно так:
{
"items": [
{
"id": "5af8bdb20b0aa02928514a00",
"merchantList": [
{
"merchantId": "5ad79c500b0aa07ed040fe4b",
"merchant": {
"name": "Merchant 1"
}
}
],
}
]
}
Если у кого-то есть идеи, как это сделать.Было бы очень полезно:)