$和expression必须是非空数组

时间:2016-03-06 20:26:31

标签: mongodb go mgo

我正在尝试使用mgo lib创建查询。

q := bson.M{
    "$and": bson.M{
        "btId": neighbour.BtId,
        "timestamp": bson.M{
            "$gt": sensorDataStartPoint.Timestamp,
            "$lt": sensorDataStartPoint.Timestamp.Add(time.Second * 3000),
        },
    },
}

因此,这会呈现为map[$and:map[btId:BTR0102 timestamp:map[$gt:2012-04-11 19:08:59 +0200 CEST $lt:2012-04-11 19:58:59 +0200 CEST]]],但在尝试执行查询时出现错误$and expression must be a nonempty array

应该是:btId = "123" AND timestamp > sensorDataStartPoint.Timestamp AND timestamp < sensorDataStartPoint.Timestamp + 3000s

谢谢

1 个答案:

答案 0 :(得分:1)

尝试:

q := bson.M{
    "btId": neighbour.BtId,
    "timestamp": bson.M{
        "$gt": sensorDataStartPoint.Timestamp,
        "$lt": sensorDataStartPoint.Timestamp.Add(time.Second * 3000),
    },
}

没有必要使用$and,因为它是MongoDB查询的默认设置。

另请注意,如果有必要使用$and预期的参数,则会有数组,而不是地图!