首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于复杂查询的MongoDB C#数组筛选器

用于复杂查询的MongoDB C#数组筛选器
EN

Stack Overflow用户
提问于 2021-02-12 09:38:27
回答 1查看 114关注 0票数 0

使用MongoDB C#/.NET驱动程序版本2.11.5。这是我的收藏结构。

CollectionName:部署

代码语言:javascript
复制
{
    "_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#类名:

部署(有多个IList<Policy> Policies)

策略(有多个IList<Rule> Rules)

规则

更新规则中的状态、注释和updatedBy字段的更新查询是什么,给定Policy.Name (对于ex: Policy-1)和Rule.subject (对于ex: updatedBy)

  1. 什么是插入查询以在策略中插入一个新的规则对象,给定Policy.Name (对于ex: Policy-1)?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-02-12 12:21:34

关于这个问题-

Querying, filtering and updating multiple level nested arrays in MongoDB using C#

我已经执行了以下内容,并如预期的那样起了作用。

代码语言:javascript
复制
    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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66169408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档