2014-10-29 101 views
3

是否有可能有一個方法,將一個字符串數組作爲輸入,然後使用此數組創建查詢的選定字段? 所以,如果你有可以說此陣:通過輸入使用mgo選擇查詢的選定字段

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

然後你就可以自動創建這樣的:

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

,然後執行查詢

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

'myArray'是一個BTW片段,而不是一個數組。 – user161778 2016-06-03 17:42:44

回答

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()