この MongoDB ドキュメントがあります。私は MVC アプリケーションを開発しており、C# を使用してコメント配列 (「更新後のコメント」へのコメント付きの説明) を更新しようとしています。新しいmongodbバージョンを使用しています。
{
"ProjectID":1,
"ProjectName":"Project test",
"ProjectStatus":"Active",
"ProjectTasks":[
{
"ProjectTaskID":1,
"TaskShortDescription":"short task description",
"TaskLongDescription":"long task description",
"Comments":[
{
"CommentID":1,
"CommentDescription":"comment before update",
"CreatedBy":"Mike",
"UploadDocuments":{
"TaskID":null,
"CommentID":null,
"UploadDocumentID":1,
"UploadDocumentName":"first document upload"
}
}
]
}
]
}
私はこれを使ってみました:
var filter = Builders<Project>.Filter.And(Builders<Project>.Filter.Eq(x => x.ProjectID, projectID), Builders<Project>.Filter.ElemMatch(x => x.ProjectTasks, x => x.ProjectTaskID == projectTaskID), Builders<Project>.Filter.ElemMatch(x => x.ProjectTasks.ElementAt(-1).Comments, x => x.CommentID == comment.CommentID));
var update = Builders<Project>.Update.Set(x => x.ProjectTasks.ElementAt(-1).Comments.ElementAt(-1).CommentDescription, comment.CommentDescription );
Collection.UpdateOneAsync(filter, update, new UpdateOptions() { IsUpsert = true });
フィルターも変えてみた
var filter = Builders<Project>.Filter.And(Builders<Project>.Filter.Where(p => p.ProjectID == projectID), Builders<Project>.Filter.Eq("ProjectTasks.ProjectTaskID", projectTaskID), Builders<Project>.Filter.Eq("ProjectTasks.$.Comments.$.CommentID", comment.CommentID));
どちらの場合も、コメントのクエリ、フィルター、および更新を行うことができません。
このドキュメントのコメントを見つけて更新する方法を教えてください。どんな提案でも大歓迎です!