Как написать запрос Mongodb для регулярных выражений в GoLang с помощью BSON? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу выполнить поиск по шаблону в записях с именем в mongodb, используя драйвер go mongodb.

Я использую запрос ниже для достижения этого.

filter := bson.D{{Key: "tenantId", Value: cmd.TenantID}}
if cmd.FirstNameSearch != "" {
    filter = append(filter, bson.E{Key: "firstName",
        Value: bson.M{"$regex": primitive.Regex{Pattern: "^" + cmd.FirstNameSearch + "$", Options: "i"}}})
}

Это не работает длямне.Не могли бы вы исправить меня, если я делаю что-то не так.

Даже в и не в тоже не работают.

if len(cmd.StatusIn) > 0 {
    filter = append(filter, bson.E{Key: "status", Value: bson.E{Key: "$in", Value: cmd.StatusIn}})
}
if len(cmd.StatusNotIn) > 0 {
    filter = append(filter, bson.E{Key: "status", Value: bson.E{Key: "$nin", Value: cmd.StatusNotIn}})
}

cmd.StatusIn является фрагмент строки ([] строка)

1 Ответ

0 голосов
/ 23 апреля 2019

Ниже приведен пример запроса с регулярным выражением mongo-driver v1.0:

filter := bson.D{{Key:"foo", Value:99}}
filter = append(filter, bson.E{Key:"bar", Value: bson.D{
        {"$regex", primitive.Regex{Pattern:"^ThisValue.*", Options:"i"}},
    }},
)
cursor, err := collection.Find(context.Background(), filter )

В приведенном выше примере также добавлен элемент BSON bson.E для BSON Document bson.D filter.Похоже на ваш пример.

Я бы предложил проверить структуру, в которой вы декодируете результат запроса, и / или есть ли в коллекции соответствующий документ (ы).

...