Как обновить много документов в mongodb, используя golang - PullRequest
0 голосов
/ 30 октября 2018

При чтении обновления много записей ссылка . Существует запрос оболочки mongodb, который используется для обновления многих записей в БД. Затем я хочу реализовать ниже данный запрос в Голанге для обновления многих документов. Я также проверяю документ mgo . Существует функция, которая обновляет много документов, но сначала потребуется только два параметра - selector, а другой - update. Но в mongodb link есть три параметра, которые мы должны передать в запросе. В коллекции 200 тыс. Записей, и я обновляю только 2000 записей. Я хочу реализовать следующий запрос в golang:

db.collection.update(
 <query>,
 <update>,
 {
   upsert: <boolean>,
   multi: <boolean>,
   writeConcern: <document>,
   collation: <document>,
   arrayFilters: [ <filterdocument1>, ... ]
  }
)

Я использовал это так:

UpdateAll(config.BookingsCollection, nil, bson.M{"$set": bson.M{"is_price_field": 1}}).Limit(2000)

Это выдаст мне ошибку:

UpdateAll () с несколькими значениями в контексте с одним значением

Когда я уберу Лимит (2000), он не покажет ошибку, но не удовлетворит мой результат.

Обновлено

В основном я следую структуре MVC

Контроллеры:

func BulkUpdateBookings(c *gin.Context) {
 err := models.UpdateBulkBookingsDb()
 fmt.Println(err)
}

Модель:

func UpdateBulkBookingsDb() (err error) {
  mongoSession := config.ConnectDb()// database connection
  defer mongoSession.Close()
  sessionCopy := mongoSession.Copy()
  defer sessionCopy.Close()
  getCollection := sessionCopy.DB(Database).C(collection)
   _, err = getCollection.UpdateAll(nil, bson.M{"$set": bson.M{"is_price_update": 0}})
  return err
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...