使用C#驱动程序更新由父级和嵌套式Id过滤的mongo文档

时间:2012-12-04 19:09:16

标签: c# mongodb

首先,对不起我的英语;)

我有下一个代表一个人可以拥有多个电子邮件帐户的课程,每个帐户都有各自的电子邮件

public class Person
{
    public string Id { get; set; }
    public string Name { get; set; }
    public EmailAccount[] Accounts { get; set; }
}

public class EmailAccount
{
    public string Id { get; set; }
    public string Name { get; set; }
    public Message[] Messages { get; set; }
}

public class Message
{
    public string Date { get; set; }
    public string Content { get; set; }
}

我需要替换特定电子邮件帐户的消息,但我首先需要按人员ID和帐户ID进行选择,如何使用Mongodb c#驱动程序执行此操作,我做了类似的事情,但没有成功:

var collection = _mongoDatabase.GetCollection<Person>("Person");
var query = Query.EQ("Person._id", "20");

var bsonMessages = BsonDocumentWrapper.CreateMultiple(new[]
{
    new Message(DateTime.Now.ToString(CultureInfo.InvariantCulture), "Test 55"),
    new Message(DateTime.Now.ToString(CultureInfo.InvariantCulture), "Test 66")
});

var messageArray = new BsonArray(bsonMessages);

var update = Update.Set("Accounts.$.Messages", messageArray);
collection.Update(query, update, UpdateFlags.Upsert);

正如您所看到的,我按照其ID过滤了此人,但我不知道如何添加第二个过滤器来按其ID选择帐户

我感谢任何帮助;)

0 个答案:

没有答案