我有一个名为Jobs
的集合。
[
{
_id : 1
content:[
{
_id : 1,
stuff: "A"
},
{
_id : 2,
stuff: "B"
}
]
},
{
_id : 2
content:[
{
_id : 1,
stuff: "X"
},
{
_id : 2,
stuff: "Y"
}
]
},
...
]
我想将stuff
字段更新为Z
2和job._id =
content._id = 2
。
我尝试过这样的事情:
var collection = database.GetCollection("Jobs");
var query = Query.EQ("_id", jobId);
var job = collection.FindOneAs<Job>(query);
var con = job.content.FirstOrDefault(x => x._id == contentIndex);
if (con != null) con.stuff = "Z";
collection.Save(job);
那么如何使用这样的单个查询来更新嵌套文档呢?
collection.Update(Query.EQ("content._id", contentIndex), Update.Set("content.$.stuff", "Z"));
提前致谢!
答案 0 :(得分:0)
在shell中,您可以使用positional运算符并使用如下查询更新元素:
db.jobs.update({"_id": 2, "content._id":2}, {"content.$.stuff", "Z"});
同一个查询可以翻译成C#(我不熟悉)。