在读取更新时,许多记录link。 mongodb shell查询用于更新数据库中的许多记录。然后我想在golang中实现以下给定的查询,以更新许多文档。我还检查了mgo文档。有一个可以更新许多文档的函数,但是它只需要两个参数,第一个是selector
,另一个是update
。但是在mongodb link中,我们必须在查询中传递三个参数。在集合中有20万条记录,而我仅更新了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()
当我删除Limit(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
}