更新嵌入式集合元素MongoDB

时间:2013-09-09 14:23:59

标签: c# .net mongodb mongodb-.net-driver

我们有下一个域名模型:

public class User
{
    public ObjectId Id { get; set; }

    public string Name { get; set; }

    public List<Comment> Comments { get; set; }
}

public class Comment
{
    public ObjectId Id { get; set; }

    public string Text { get; set; }
}

我们在项目中使用MongoDB CSharp驱动程序。 我们收集了“用户”以及与特定用户相关的所有评论,我们将其存储在此单个文档中。

问题1:当我知道 UserId CommentId 时,更新评论文字的正确方法是什么? 问题2:嵌入元素应该有自己的标识符吗?

由于

1 个答案:

答案 0 :(得分:0)

这是您需要的代码:

var update = Update.Set("Comments.$.Text", "new comment text");
var query = Query.And(
   Query<User>.EQ(u => u.Id, userId),
   Query<User>.ElemMatch(u => u.Comments, eq => eq.EQ(c => c.Id, commentId)));
userCollection.Update(query, update);