我正在尝试将一个有效的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
声明?
答案 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"})