如何使用bson在GoLang中编写正则表达式的mongodb查询?

时间:2019-04-18 06:31:27

标签: regex mongodb go bson

我想使用go mongodb驱动程序在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是字符串([] string)的切片

1 个答案:

答案 0 :(得分:0)

以下是有关如何使用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 element bson.E过滤器附加了BSON Document bson.D。与您的示例类似。

我建议检查要解码查询结果的结构,和/或集合中是否有匹配的文档。