首页 > 解决方案 > 如何使用 mongodb c# 驱动程序更新除 ID 之外的整个文档

问题描述

目前我正在更新整个文档,但如果 ID 更改,我会收到错误消息:

MongoDB.Driver.MongoWriteException:'写入操作导致错误。应用更新后,发现(不可变)字段 '_id' 已更改为 _id:BinData(3, B3FD0EE0FF161845BE96BE40A7DDE84B)'

所以我希望它在更新文档时忽略 ID 字段。

这就是我现在正在做的事情:

 public async Task<bool> UpdateMatch(Guid id, Match match)
    {
            ReplaceOneResult actionResult
                = await _context.Match.ReplaceOneAsync(m => m.Id.Equals(id),
                match,
                new UpdateOptions { IsUpsert = true });

            return actionResult.IsAcknowledged && actionResult.ModifiedCount > 0;
    }

在此先感谢您的帮助!

标签: c#mongodbasp.net-web-apimongodb-.net-driver

解决方案


将“BsonIgnoreIfDefault”属性添加到 InternalId 属性。

public class Document
{
    [BsonId]       
    [BsonIgnoreIfDefault]
    public ObjectId InternalId { get; set; }
    // rest of document
}

推荐阅读