最近项目中用到,在此记录一下
示例:
// 创建一个查询条件
var query = bson.M{
"$or": []bson.M{
bson.M{"field1": "value1"},
bson.M{"field2": "value2"},
},
"$and": []bson.M{
bson.M{"field3": "value3"},
bson.M{"field4": "value4"},
},
}
// 执行查询
err := collection.Find(query).All(&result)
if err != nil {
// 处理错误
}
实际使用代码 查询条件filter:
match := bson.M{}
or := []bson.M{}
if !stringx.IsWhiteSpace(ID) {
if len(ID) > 20 {
// or = append(or, bsonx.RegexI("_id", ID))
or = append(or, bson.M{"_id": ID})
}
}
if !stringx.IsWhiteSpace(Sn) {
or = append(or, bson.M{"sn": bson.M{"$regex": Sn}})
}
if !stringx.IsWhiteSpace(Name) {
or = append(or, bson.M{"name": bson.M{"$regex": Name}})
}
if len(or) > 0 {
match["$or"] = or
}
// and查询
if !stringx.IsWhiteSpace(ProductId) {
match["product_id"] = ProductId
}
return match