簡體   English   中英

MongoDB C# 用於復雜查詢的數組過濾器

[英]MongoDB C# Array Filters for Complex Queries

我正在使用 MongoDB C#/.NET 驅動程序版本 2.11.5。 這是我的收藏結構。

集合名稱:部署

{
    "_id" : ObjectId("60263b3279357e12775bfb21"),
    "version" : "P3-V1.0",
    "productId" : "6020f75d103d4895f12c88ec",
    "hierarchy" : "6020f8ad103d4895f12c88ed",
    "description" : "P3-T1-V1.0",
    "policies" : [ 
        {
            "name" : "Policy-1",
            "description" : "Policy-1",
            "rules" : [ 
                {
                    "subject" : "abc.def@xyz.com",
                    "status" : "InProgress",
                    "comments" : "",
                    "updatedBy" : "",
                    "approvalId" : "8f7c8767-6613-4aa2-9b87-7778a42512bd",
                    "requestDate" : ISODate("2021-02-12T08:29:32.000Z")
                },
                {
                    "subject" : "ghi.jkl@xyz.com",
                    "status" : "InProgress",
                    "comments" : "",
                    "updatedBy" : "",
                    "approvalId" : "9e7c8767-6613-4aa2-9b87-7778a42512ee",
                    "requestDate" : ISODate("2021-02-11T08:29:32.000Z")
                }               
            ]
        },
        {
            "name" : "Policy-2",
            "description" : "Policy-2",
            "rules" : [ 
                {
                    "subject" : "mno.pqr@xyz.com",
                    "status" : "InProgress",
                    "comments" : "",
                    "updatedBy" : "",
                    "approvalId" : "1a6c8767-6613-4aa2-9b87-7778a42512bd",
                    "requestDate" : ISODate("2021-02-12T08:29:32.000Z")
                },
                {
                    "subject" : "stu.vwx@xyz.com",
                    "status" : "InProgress",
                    "comments" : "",
                    "updatedBy" : "",
                    "approvalId" : "2z0c8767-6613-4aa2-9b87-7778a42512ee",
                    "requestDate" : ISODate("2021-02-11T08:29:32.000Z")
                }               
            ]
        }
    ]
}

C# Class 名稱:

部署(有多個IList<Policy> Policies

政策(有多個IList<Rule> Rules

規則

  1. 在給定 Policy.Name(例如:Policy-1)和 Rule.subject(例如:abc.def@xyz.com)的情況下,更新規則中的狀態、評論和 updatedBy 字段的更新查詢是什么?

  2. 在給定 Policy.Name(例如:Policy-1)的情況下,在 Policy 中插入新規則 object 的插入查詢是什么?

謝謝你的幫助。

關於這個問題 -

使用 C# 查詢、過濾和更新 MongoDB 中的多層嵌套 arrays

我已經實施了以下內容,並且按預期工作。

    var updateFilter = Builders<Deployment>.Filter.Eq(f => f.Id, deployment.Id);
        
    var updateBuilder = Builders<Deployment>.Update
.Set("policies.$[i].rules.$[j].comments", rule.Comments)
.Set("policies.$[i].rules.$[j].completionDate", rule.CompletionDate)
.Set("policies.$[i].rules.$[j].status", Enum.GetName(rule.Status))
.Set("policies.$[i].rules.$[j].updatedBy", rule.UpdatedBy);
        
    var arrayFilters = new List<ArrayFilterDefinition>()
                {
new BsonDocumentArrayFilterDefinition<Policy>(new BsonDocument("i.name", policy.Name)),
new BsonDocumentArrayFilterDefinition<Rule>(new BsonDocument("j.subject", rule.Subject))
                };
        
    var updateOptions = new UpdateOptions()
                {
                  ArrayFilters = arrayFilters
                };
        
    await _deploymentRepository.UpdateOneAsync(updateFilter, updateBuilder, updateOptions);

暫無
暫無

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

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