В управляемом сообществом драйвере Mongo для Go, то есть Mgo, мы можем использовать вызов API Apply
для запуска запросов MongoDB, включающих $set
или $inc
. Пример этого варианта использования в Mgo следующий:
change := mgo.Change{
Update: bson.M{"$set": bson.M{"phone": "+55 53 8402 8510"}},
ReturnNew: true,
}
_, err = MongoSession.DB("test").C("people").Find(bson.M{"_id": a}).Apply(change, &result)
Цитирование официальной документации для этого вызова API:
Apply запускает команду findAndModify MongoDB, которая позволяет обновлять,
добавление или удаление документа, соответствующего запросу и атомарно
возвращая либо старую версию (по умолчанию), либо новую версию
документ (когда ReturnNew имеет значение true).
В настоящее время я работаю над переносом проекта с Mgo на официальный драйвер Mongo Go . Однако я не могу найти какой-либо метод, который запускает команду findAndModify для достижения аналогичного варианта использования. Для замены API Apply соответствующим методом из официального драйвера, какой подход рекомендуется?
Я рассмотрел запрос в разделе «Обновление» в существующем коде и вручную, используя методы поиска / обновления / замены, предоставленные в официальном драйвере. Но есть ли лучший способ сделать то же самое?