如何在Golang中运行mgo查询中的$和运算符

时间:2016-05-09 07:57:02

标签: mongodb go mgo database

我想在Golang中的MongoDB中执行以下查询

check_select = bson.M{
            "$and": []interface{}{
                "shr_key": user_shr_key,
                "id": uid,
                "user_history": bson.M{"$elemMatch": bson.M{"action": "STOP", "message_id": mid}},
            },
        }

请帮助......我收到以下错误"index must be non-negative integer constant"

2 个答案:

答案 0 :(得分:6)

错误来自初始化array中的go

....
"$and": []interface{}{
    "shr_key": user_shr_key,
....

go数组不接受string作为索引。

无论如何,为了解决你的问题,从数组初始化中删除索引并在bson.M中包装键值对,例如:

bson.M{
            "$and": []bson.M{ // you can try this in []interface
                bson.M{"shr_key": user_shr_key},
                bson.M{"id": uid},
                bson.M{"user_history": bson.M{"$elemMatch": bson.M{"action": "STOP", "message_id": mid}}},
            },
        }

答案 1 :(得分:1)

您可以在此处看到,通过$ Match获取值,$和使用Golang MongoDB


pipeline := []bson.M{
bson.M{"$match": bson.M{"$and": []bson.M{bson.M{"storyID": storyID}, 
bson.M{"parentID": parentID}}}}
}