Golang BSON转换

时间:2014-08-27 03:03:46

标签: mongodb go bson

我正在尝试将一个有效的mongo查询转换为golang中的bson。我有基本的东西和工作,但我正在努力弄清楚如何将更高级的or查询集成到混合中。

任何人都有一分钟帮我转换以下查询?它应该有希望给我我需要的方向......不幸的是,除了评估和查询之外我还没有找到很多例子。

这适用于mongo:

db.my_collection.find({"$or": [
      {"dependencies.provider_id": "abc"}, 
      {"actions.provider_id": "abc"}]})

这适用于golang / bson:

bson.M{"dependencies.provider_id": "abc"}

如何正确介绍or声明?

3 个答案:

答案 0 :(得分:7)

在你的情况下,它将是:

bson.M{"$or": []bson.M{
    {"dependencies.provider_id": "abc"},
    {"actions.provider_id": "abc"},
}}

答案 1 :(得分:6)

为了完整起见,这里是上述评论中我最后一个问题的完整示例。更大的目标是在go中动态构建bson查询。非常感谢ANisus:

query := bson.M{}
query["origin"] = "test"
query["$or"] = []bson.M{}
query["$or"] = append(query["$or"].([]bson.M), bson.M{"abc": "1"})
query["$or"] = append(query["$or"].([]bson.M), bson.M{"def": "2"})

答案 2 :(得分:1)

像这样

package main
import "github.com/globalsign/mgo/bson"

query := make([]map[string]interface{}, 0)
query = append(query, map[string]interface{}{"dependencies.provider_id": "abc"})
query = append(query, map[string]interface{}{"actions.provider_id": "abc"})