C# 使用CSharp更新子文档

C# 使用CSharp更新子文档,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,您好,有人能告诉我如何更新Mongo文档中的子项吗?我尝试了以下查询 var UpdateInvoice = Update.Set("Paid.Invoice.$.Number", 123456) .Set("Paid.Invoice.$.Amount", 200) .Set("Paid.Invoice.$.SubscriptionPeriod", 20) .Set("Paid.Invoice.$.Date", DateTime.Now) .Set("Paid.I

您好,有人能告诉我如何更新Mongo文档中的子项吗?我尝试了以下查询

var UpdateInvoice = Update.Set("Paid.Invoice.$.Number", 123456)
    .Set("Paid.Invoice.$.Amount", 200)
    .Set("Paid.Invoice.$.SubscriptionPeriod", 20)
    .Set("Paid.Invoice.$.Date", DateTime.Now)
    .Set("Paid.Invoice.$.UserCount", 10)
    .Set("Paid.Invoice.$.ProjectCount", 5);
var queryUpdateInvoice = collection.Update(
    Query.And(
        Query.EQ("_id", "5350ceb26699c2180856a42a"),
        Query.EQ("_id", "5350af0f6699c2115c8495a4"),
        Query.ElemMatch("Invoice", Query.EQ("_id", "5350cefe6699c21bd8554f21"))
    ),
    UpdateInvoice, UpdateFlags.Upsert
);
在上面的代码中,Paid是子项,invoice是子项。上面的查询对我不起作用。查询部分中的ID分别是文档、付款、发票的ID。请帮助我,因为我找不到更新文档的替代方法

public class Paid
    {
        [BsonId]
        public string Id { get; set; }
        public List<Invoice> Invoice = new List<Invoice>();
        public string Status { get; set; }
}
public class Invoice
    {
        [BsonId]
        public string Id { get; set; }
        public long Number { get; set; }
        public int UserCount { get; set; }
}
公共类付费
{
[BsonId]
公共字符串Id{get;set;}
公共列表发票=新列表();
公共字符串状态{get;set;}
}
公共类发票
{
[BsonId]
公共字符串Id{get;set;}
公共长编号{get;set;}
public int UserCount{get;set;}
}

这些是我的类,已付款和发票属于同一文档。我希望更新未付款文档的发票部分

您似乎正在尝试更新两个文档,如查询条件所示。我怀疑您对使用
$和
的假设是错误的,并且查询中的一条路径以“Paid”开头,而另一条路径没有。我建议在你的问题中显示你试图更新的文档。嗨,NeilLunn,我有更新我的问题。你能帮我一下吗?不是你的类定义,而是实际的文档和内容,比如mongo shell的外观。请不要在评论中发布类似的详细信息。编辑您的问题,而不是请注意缩进您的代码,以正确的格式。其他人已经为你做了两次了。当你自己编辑并复制的时候,看看已经做了什么。嗨,尼尔,谢谢你的建议。抱歉,因为我不知道如何正确发布。下次会处理好的。