diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-06-06 13:12:01 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-06-06 13:12:01 -0700 |
| commit | 21ad9a4ac29fad0794369cc05d1f29fa91340c34 (patch) | |
| tree | 49b6376a1ac28969a010ae14f381495c62177e39 | |
| parent | e6ba2f9c372f8f160003dac63d51b6dde0a512de (diff) | |
| download | seaweedfs-21ad9a4ac29fad0794369cc05d1f29fa91340c34.tar.xz seaweedfs-21ad9a4ac29fad0794369cc05d1f29fa91340c34.zip | |
filer: mongodb avoids E11000 duplicate key error collection: seaweedfs.filemeta index: directory_1_name_1 dup key
| -rw-r--r-- | weed/filer/mongodb/mongodb_store_kv.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/weed/filer/mongodb/mongodb_store_kv.go b/weed/filer/mongodb/mongodb_store_kv.go index 4aa9c3a33..59b8f1d93 100644 --- a/weed/filer/mongodb/mongodb_store_kv.go +++ b/weed/filer/mongodb/mongodb_store_kv.go @@ -7,6 +7,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" ) func (store *MongodbStore) KvPut(ctx context.Context, key []byte, value []byte) (err error) { @@ -15,11 +16,11 @@ func (store *MongodbStore) KvPut(ctx context.Context, key []byte, value []byte) c := store.connect.Database(store.database).Collection(store.collectionName) - _, err = c.InsertOne(ctx, Model{ - Directory: dir, - Name: name, - Meta: value, - }) + opts := options.Update().SetUpsert(true) + filter := bson.D{{"directory", dir}, {"name", name}} + update := bson.D{{"$set", bson.D{{"meta", value}}}} + + _, err = c.UpdateOne(ctx, filter, update, opts) if err != nil { return fmt.Errorf("kv put: %v", err) |
