Go语言如何构造包含时间范围与$in条件的bson查询语句
BSON查询构造错误原因
- Mongoose框架提供的
.where()是链式添加匹配条件的语法糖,和MongoDB原生的$where操作符没有任何关联 - 原生MongoDB查询中
$where是用于执行自定义JavaScript脚本做条件匹配的操作符,性能极低,完全不适用于当前字段匹配场景
正确查询写法
你的需求对应的BSON结构只需要把所有匹配条件平级放在顶级bson.M中即可,多个顶级条件默认是AND关系:
aliases := []string {"000","111"} query := bson.M{ "datetime": bson.M{ "$gt": startDate, "$lt": endDate, }, "device_alias": bson.M{ "$in": aliases, }, }
动态指定匹配字段的写法
如果需要和Mongoose示例一样,用变量动态指定要匹配的字段名,直接把变量作为bson.M的键即可:
// param 为动态传入的要匹配的字段名,params为对应的匹配值数组 param := "device_alias" params := []string{"000", "111"} query := bson.M{ "datetime": bson.M{ "$gt": startDate, "$lt": endDate, }, param: bson.M{ "$in": params, }, }
内容的提问来源于stack exchange,提问作者Barty
相关产品推荐
相关产品推荐

