我有以下类结构:
public class DBTestItem
{
public int p0;
public int p1;
public int p2;
public int p3;
public int p4;
public int p5;
public int p6;
public int p7;
public string data;
}
public sealed class MongoTestItem : DBTestItem
{
public ObjectId _id;
}
_id 对我来说毫无意义。p0 - p7 表示复合键,data 表示值。
我想保存MongoTestItem
数据唯一的文档,理想情况下不执行更新,因为它们没有意义。换句话说,如果集合中不存在数据的值,则保存。
我查看了文档,但不太了解如何编写满足上述要求的语句。
我确实创建了一个不同的结构,其中 p0 - p7 生成一个复合 _id 并且数据是一个列表,在这种情况下,语句如下:
var query = Query<MdbData>.EQ(x => x._id, doc._id);
var update = Update<MdbData>.Push(x => x.data, "somenewvalue");
col.Update(query, update, UpdateFlags.Upsert);
这有不同的语义,所以 upsert 是可以的。
我想写以上内容,以便评估性能差异。