我想使用go mongodb驱动程序在mongodb中使用firstname进行通配符搜索。
我正在使用下面的查询来实现它。
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是字符串切片([]字符串)
下面是如何使用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。与你的例子类似。
我建议检查你正在解码查询结果的结构,和/或集合中是否有匹配的文档。