簡體   English   中英

如何過濾集合中的嵌套文檔並更新文件?

[英]How to filter a nested document in a collection and update a filed?

我有一個名為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 ,其中job._id = 2和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"));

提前致謝!

在外殼中,您可以使用位置運算符並使用類似以下查詢的元素來更新元素:

db.jobs.update({"_id": 2, "content._id":2}, {"content.$.stuff", "Z"});

相同的查詢可以轉換為C#(我不熟悉)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM