首页 > 解决方案 > 无法通过查询定位 upsert :: 无法提取确切的分片键

问题描述

我设置了一个分片数据库并在集合上启用分片(EmailAddress as shardKey)。下面是我要插入集合的代码(仅在 EmailAddress 不存在时插入)

var con = MongoDBConnection.Connection;
var database = con.GetDatabase("MyDbName");
var collection = database.GetCollection<MyDbClass>("MyCollectionName");
    
var testFilter = new BsonDocument("EmailAddress", "abc@gmail.com");
var result = collection.UpdateOne(testFilter, Builders<MyDbClass>.Update
             .SetOnInsert("Name", "John Doe")
             .SetOnInsert("EmailAddress", "abc@gmail.com")
             .SetOnInsert("City", "NY"), new UpdateOptions() { IsUpsert = true });

当我运行此代码时,它给了我这个错误“批量写入操作导致一个或多个错误。无法通过查询定位 upsert :: 无法提取确切的分片键”

任何帮助将不胜感激 !

标签: c#mongodbsharding

解决方案


推荐阅读