首页 > 解决方案 > 如何使用 bulk.Insert() 将 interface{} 类型插入 mongodb

问题描述

我不能在我的集合中插入一个大数组;我的类型有问题interface{}

这是代码:

collections = getSession().DB("go").C("comments")

func BenchmarkBulkInsert(data interface{}) {
    bulk := collections.Bulk()

    bulk.Insert(data...)
    _, bulkErr := bulk.Run()
    if bulkErr != nil {
        panic(bulkErr)
    }

    fmt.Printf("\n - %d comments inserted!", reflect.ValueOf(data).Len())
}

我无法构建应用程序。错误信息是这样的:

不能在 bulk.Insert 的参数中使用数据(类型接口 {})作为类型 [] 接口 {}:需要类型断言

我正在使用“gopkg.in/mgo.v2”包连接到Mongo数据库,data当我将它打印到控制台时是一个数组。

标签: mongodbgo

解决方案


你应该使用variadic func 所以你必须改变输入参数:

func BenchmarkBulkInsert(data interface{}) 

对此:

func BenchmarkBulkInsert(data ...interface{}) 

推荐阅读