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

Я не могу вставить большой массив в свою коллекцию; У меня проблема с типом 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())
}

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

cannot use data (type interface {}) as type []interface {} in argument to bulk.Insert: need type assertion

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

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

ifnotak 09.04.2019 23:58

? можешь мне объяснить?

Hernan Humaña 10.04.2019 00:15

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

ifnotak 10.04.2019 00:26
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
3
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать вариационная функция Таким образом, вы должны изменить входной параметр с этого:

func BenchmarkBulkInsert(data interface{}) 

к этому :

func BenchmarkBulkInsert(data ...interface{}) 

эй, не могли бы вы сказать мне, правильно ли написан метод, который я использую для вставки массива?

Hernan Humaña 10.04.2019 00:37

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

Mostafa Solati 10.04.2019 00:39

Другие вопросы по теме