Как вставить тип интерфейса {} в mongodb с помощью bulk.Вставить ()

#mongodb #go

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

Я не могу создать приложение. Сообщение об ошибке таково:

невозможно использовать данные (тип interface {}) в качестве типа []interface {} в аргументе bulk .Вставить: требуется утверждение типа

Я использую «gopkg.in/mgo.v2 » пакет для подключения к базе данных Mongo и data представляет собой массив, когда я печатаю его на консоли.

Комментарии:

1. Вероятно, вы захотите использовать data ...interface{} вместо data interface{}

2. 🤔 можете ли вы мне объяснить?

3. измените сигнатуру функции func BenchmarkBulkInsert(data ...interface{})

Ответ №1:

Вы должны использовать variadic func, поэтому вам нужно изменить входной параметр из этого :

 func BenchmarkBulkInsert(data interface{}) 
  

для этого :

 func BenchmarkBulkInsert(data ...interface{}) 
  

Комментарии:

1. привет, можешь сказать мне, правильно ли написан метод, который я использую для вставки массива?

2. Да, все в порядке.