1

まず、私の英語でごめんなさい;)

多くの電子メール アカウントを持つことができる人を表す次のクラスがあり、それらの各アカウントにはそれぞれの電子メール メッセージがあります

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 でアカウントを選択する 2 番目のフィルターを追加する方法がわかりません。

助けていただければ幸いです;)

4

0 に答える 0