Создание динамического фильтра с помощью mongo-go-driver - PullRequest
0 голосов
/ 26 июня 2019

Я хочу создать динамический фильтр с драйвером mongo-go.

Например, у меня есть следующие документы:

{
"_id":"5d1231380a2a2b39a99c3ed1"},
"name":"flower.png",
"colors":["#ffffff","#212121","#999999","#dbdbdb","#ff5252"],
},
{
"_id":"5d1231380a2a2b39a99c3ed0"},
"name":"image of go.jpg",
"colors":["#dedede","#dfdfdf","#dddddd","#e0e0e0","#e2e2e2"],
},
{
"_id":"5d1231380a2a2b39a99c3ecf"},
"name":"bolket rulez.png",
"colors":["#000000","#010101","#020202","#030303","#040404"],
},
{
"_id":"5d1231380a2a2b39a99c3ecf"},
"name":"bolket photo.png",
"colors":["#ffffff","#010101","#020202","#030303","#040404"],
}

Теперь я хочу все документы, которые имеют "bolket"в названии и цвете "#ffffff".

Я пробовал с этим фильтром:

filter := make(bson.D, 2)

    if f.Name != "" {
        filter = append(filter, bson.E{Key: "name", Value: bson.M{"$text": bson.M{"$search": f.Name}}})
    }

    if f.Color != "" {
        filter = append(filter, bson.E{Key: "colors", Value: bson.M{"$in": f.Color}})
    }

Но с этим фильтром у меня есть эта ошибка: (BadValue) unknown operator: $text

Как я могу создать динамический фильтр ???

1 Ответ

0 голосов
/ 29 июня 2019

запрос операции $text поиск по полям текстового индекса в документе, вы не можете выполнять поиск по одному полю с помощью $text

, если вы создали текстовый индекс для name, затем попробуйте:

  if f.Name != "" {
        filter = append(filter, bson.E{Key: "$text", Value: bson.M{"$search": f.Name}})
    }
...