golang mongodb перенести библиотеку базы данных mongo в mgo - PullRequest
1 голос
/ 09 марта 2019

Я хочу изменить библиотеку для базы данных с github.com/mongodb/mongo-go-driver/mongo на github.com/globalsign/mgo, моя проблема в том, что я не знаю, как преобразовать этот код для новой библиотеки:

import "github.com/mongodb/mongo-go-driver/mongo/options"
res, err := s.totals().UpdateOne(ctx,
        bson.M{"contract_id": cID, "date": date},
        bson.M{"$inc": bson.M{"value": value}},
        options.Update().SetUpsert(true),
    )

Мой текущий код:

collection := s.totals()
err := collection.Update(
    bson.M{"contract_id": contractID, "date": date},
    bson.M{"$inc": bson.M{"value": value}},
    //options.Update().SetUpsert(true),
)

Как я могу преобразовать это options.Update().SetUpsert(true) для использования в новой библиотеке?

1 Ответ

1 голос
/ 09 марта 2019

Просто используйте метод Collection.Upsert() вместо Collection.Update():

info, err := collection.Upsert(
    bson.M{"contract_id": contractID, "date": date},
    bson.M{"$inc": bson.M{"value": value}},
)

Цитата из документа Collection.Upsert():

Upsert находит один документ, соответствующий предоставленному документу селектора, и модифицирует его в соответствии с документом обновления. Если документ, соответствующий селектору, не найден, документ обновления применяется к документу селектора, и результат вставляется в коллекцию.

...