Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 不同的结构类型将切片作为go中函数的参数_Mongodb_Go - Fatal编程技术网

Mongodb 不同的结构类型将切片作为go中函数的参数

Mongodb 不同的结构类型将切片作为go中函数的参数,mongodb,go,Mongodb,Go,我一直在尝试推广以下代码,以避免重复代码 func(db*MongoController)extractmanybydfromdb(dbName字符串,collectionName字符串,pResults接口{},limit int64)(int,error){ 集合:=db.client.Database(dbName).collection(collectionName) findOptions:=选项。查找() findOptions.SetLimit(限制) //将bson.D{{}作为

我一直在尝试推广以下代码,以避免重复代码

func(db*MongoController)extractmanybydfromdb(dbName字符串,collectionName字符串,pResults接口{},limit int64)(int,error){
集合:=db.client.Database(dbName).collection(collectionName)
findOptions:=选项。查找()
findOptions.SetLimit(限制)
//将bson.D{{}作为筛选器传递与集合中的所有文档匹配
cur,err:=collection.Find(context.TODO(),bson.D{{},findOptions)
如果错误!=零{
日志打印(错误)
}
//查找多个文档将返回一个游标
//通过遍历光标,我们可以一次解码一个文档
i:=0
对于cur.Next(context.TODO()){
//创建一个可将单个文档解码为的值
变量错误
err=cur.Decode(pResults)//pResults是一些*[]我的结构
如果错误!=零{
log.Fatal(错误)
}
我++
}
如果错误:=cur.err();错误!=nil{
log.Fatal(错误)
}
cur.Close(context.TODO())
我回来了,呃
}
我试图填充参数
pResults
给出的数组数据,现在代码无法使用
cur.Decode()
MyStruct
进行解码

目标是不仅能够通过MyStruct,而且能够分析MyTherStruct和my
MyAmazingStruct
,而不必为我要从数据库中提取的每个新结构开发单独的
提取ManysSpecificStructByIDFromDB

我试图在网上搜索结果,但最终没有一个搜索成功

提前谢谢

使用

使用切片长度确定解码的元素数

var results []Example
err := c.extractManyByIDFromDB(db, coll, &results, limit)
if err != nil {
   // handle error
}
fmt.Println("%d documents extracted", len(results))

谢谢,这真的解决了我的问题
var results []Example
err := c.extractManyByIDFromDB(db, coll, &results, limit)
if err != nil {
   // handle error
}
fmt.Println("%d documents extracted", len(results))