英文:
Choose selected fields of query by input using mgo
问题
可以有一个方法,该方法接受一个字符串数组作为输入,并使用该数组创建查询的选定字段。例如,如果你有以下数组:
var myArray []string{"fieldA", "fieldB"}
那么你可以自动创建如下所示的选定字段:
selectedFields := bson.M{"fieldA": 1, "fieldB": 1}
然后执行查询:
result = c.Find(query).Select(selectedFields).One()
英文:
Is it possible to have a method that takes as input an array of strings and then use this array to create the selected fields of a query?
So if you have lets say this array:
var myArray []string{"fieldA","fieldB"}
Then you can create this automatically:
selectedFields := bson.M{"fieldA": 1, "fieldB": 1}
and then execute the query
result = c.Find(query).Select(selectedFields).One()
答案1
得分: 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()
// 或者
fields := []string{"fieldA","fieldB"}
result := c.Find(query).Select(sel(fields...)).One()
这段代码的作用是定义了一个名为sel
的函数,用于创建一个bson.M
类型的映射。在sel
函数中,我们将传入的字符串参数作为键,值设置为1,并将其添加到映射中。然后,我们可以使用c.Find(query).Select(sel("fieldA", "fieldB")).One()
或c.Find(query).Select(sel(fields...)).One()
来选择查询结果中的特定字段。
英文:
You can use something like:
func sel(q ...string) (r bson.M) {
r = make(bson.M, len(q))
for _, s := range q {
r展开收缩 = 1
}
return
}
result := c.Find(query).Select(sel("fieldA", "fieldB")).One()
// or
fields := []string{"fieldA","fieldB"}
result := c.Find(query).Select(sel(fields...)).One()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论