使用mgo通过输入选择所选的查询字段

时间:2014-10-29 12:03:33

标签: mongodb go bson mgo

是否可以使用一个方法将字符串数组作为输入,然后使用此数组创建查询的选定字段? 所以如果你让我们说这个数组:

var myArray []string{"fieldA","fieldB"}

然后您可以自动创建:

selectedFields := bson.M{"fieldA": 1, "fieldB": 1}

然后执行查询

result = c.Find(query).Select(selectedFields).One()

1 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

func sel(q ...string) (r bson.M) {
    r = make(bson.M, len(q))
    for _, s := range q {
        r[s] = 1
    }
    return
}

result := c.Find(query).Select(sel("fieldA", "fieldB")).One() 
// or 

fields := []string{"fieldA","fieldB"}
result := c.Find(query).Select(sel(fields...)).One()