You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:18:04