【发布时间】:2017-06-02 03:37:17
【问题描述】:
我想插入一批文档,其中一些文档已经存在于集合中。所以我想要要么忽略它们,要么对我来说更好的解决方案是例外我想记录哪个文档是重复的,并在可能的情况下继续插入下一个文档。
我看到了几个类似的问题,但没有一个能解决这个问题。
MongoDB Bulk Insert Ignore Duplicate
MongoDB: how to insert document without repeat
我已经创建了自己的哈希属性,因为我的文档的唯一键将是多个键,所以我将它们累积起来然后计算它的哈希。
我的代码看起来像这样:
const string connectionString = "mongodb://127.0.0.1/localdb";
var client = new MongoClient(connectionString);
_database = client.GetDatabase("localdb");
var collection = _database.GetCollection<BsonDocument>("Sales");
StringBuilder customValue;
foreach (var data in dataCollectionDict)
{
customValue = new StringBuilder();
customValue.Append(data["col1"]);
customValue.Append(data["col2"]);
customValue.Append(data["col3"]);
customValue.Append(data["col4"]);
customValue.Append(data["col5"]);
customValue.Append(data["col6"]);
data.AddRange(new BsonDocument("HashMultipleKey", SHA256Func(customValue.ToString())));
}
await collection.Indexes.CreateOneAsync(new BsonDocument("HashMultipleKey", 1), new CreateIndexOptions() { Unique = true, Sparse = true ,});
await collection.InsertManyAsync(dataCollectionDict);
任何帮助将不胜感激。
【问题讨论】: