我有以下对象
class Dog{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfDefault]
[BsonIgnoreIfNull]
public string Id { get; set; }
public string Owner {get; set;}
}
以下代码无法重新插入文档,而是创建了一个新文档,因此,我遇到了一些问题,可以肯定的是,我可以在插入旧文档之前删除该旧文档,但这也将是2个查询而不是1条查询。
var result = await
collection.FindOneAndReplaceAsync(
Builders<Dog>.Filter.Eq("owner","bill"),
updateddog,
new FindOneAndReplaceOptions{
ReturnDocument = ReturnDocument.After,
IsUpsert = true});
我已经读过类似的文章,因为C#驱动程序将Id
字段序列化,然后将其用于匹配对象,但是由于使用了默认ID,因此该对象不匹配,因此我尝试了建议忽略该ID(如果它为null或默认值),但不起作用