根据字段值包括所有级别的所有文档字段 [英] Include all document fields at all levels based on the field value

查看:104
本文介绍了根据字段值包括所有级别的所有文档字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果某些人有权查看 cavoucher,puvendor 表单,我想创建基于卷的菜单,我只知道表单名,而表单名可以在文档中定义的任何地方,所以如何我可以得到仅与父母匹配的内容的结果吗?

i want to create roll based menu if some having permission to view cavoucher,puvendor forms here i know only form name nothing else and also the form name could be any where defined in the document so how can i get the result only matched content along with the parent

   [ { 
"_id" : ObjectId("57ef642fd4f27bb41b697314"), 
"menuDesc" : "Cash Module", 
"formName" : "", 
"subMenu1" : [
    {
        "menuDesc" : "Setup", 
        "formName" : "", 
        "subMenu2" : [
            {
                "menuDesc" : "Setup Bank Details", 
                "formName" : "cabank", 
            }
        ]
    }, 
    {
       "menuDesc" : "Vouchers", 
        "formName" : "", 
        "subMenu2" : [
            {
                "menuDesc" : "Maintain Cash Voucher", 
                "formName" : "cavoucher", 
            }, 
            {
                "menuName" : "Paid Voucher", 
                "menuDesc" : "Maintain Paid Voucher", 
                "formName" : "capaidvchr", 
            }
        ]
    }
    ]
},
{ 
"_id" : ObjectId("57ef6464d4f27bb41b697316"), 
"menuDesc" : "Purchase Module", 
"formName" : "", 
"subMenu1" : [
    {
        "menuDesc" : "Maintain Vendors", 
        "formName" : "puvendor" 
        }
]
}] 

我正在寻找的结果

    [{ 
"_id" : ObjectId("57ef642fd4f27bb41b697314"),
"menuDesc" : "Cash Module", 
"formName" : "", 
"subMenu1" : [
    {
        "menuDesc" : "Vouchers", 
        "formName" : "", 
        "subMenu2" : [
            {
                "menuDesc" : "Maintain Cash Voucher", 
                "formName" : "cavoucher", 
            }
        ]
    }
  ]
 },{ 
"_id" : ObjectId("57ef6464d4f27bb41b697316"), 
"menuDesc" : "Purchase Module", 
"formName" : "", 
"subMenu1" : [
    {
        "menuDesc" : "Maintain Vendors", 
        "formName" : "puvendor" 
        }
]
}}

我不知道该值在哪个级别上匹配,请提出任何可能的解决方案?

I don't know at which level has the value matched please suggest any possible solution?

推荐答案

可以使用聚合管道在MongoDB中.

It can be done using the aggregation pipeline in MongoDB.

在这里,您有两个嵌套数组subMenu1subMenu2首先是 $ match 获得结果.

Here in your case you have two nested arrays subMenu1 and subMenu2 first $unwind them and then use $match to achieve the result.

Mongo Shell查询

Mongo Shell Query

db.collection.aggregate([
    {$unwind:"$subMenu1"}, 
    {$unwind:"$subMenu1.subMenu2"},
    {$match:{"subMenu1.subMenu2.formName":"cavoucher"}}
 ])

这篇关于根据字段值包括所有级别的所有文档字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆