我有以下代表复合 _id 的测试类:
private sealed class Id
{
public int p0 { get; set; }
public int p1 { get; set; }
public int p2 { get; set; }
public int p3 { get; set; }
public int p4 { get; set; }
public int p5 { get; set; }
public int p6 { get; set; }
public int p7 { get; set; }
}
数据类:
private sealed class MdbData
{
[BsonId]
public Id _Id;
public List<string> data = new List<string>();
}
我写了一个使用所有 8 个字段的 upsert 语句,但速度非常可怕。所以我接下来要做的是使用 p0, BinarySerialized(p1:p7) 作为_id。我的用例允许我毫无问题地连接这些字段。
序列化 p1-p7 的最佳方法是什么?C# 的序列化器,还是 BSON 的?
作为记录,更新插入:
col.Update(Query.And(
Query.EQ("_id.p0", doc.p0),
Query.EQ("_id.p1", doc.p1),
Query.EQ("_id.p2", doc.p2),
Query.EQ("_id.p3", doc.p3),
Query.EQ("_id.p4", doc.p4),
Query.EQ("_id.p5", doc.p5),
Query.EQ("_id.p6", doc.p6),
Query.EQ("_id.p7", doc.p7)),
Update.Push("data", doc.data),
UpdateFlags.Upsert);