Mongodb搜索嵌套数组元素 [英] Mongodb Search nested array elements

查看:84
本文介绍了Mongodb搜索嵌套数组元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个下面的数据.想要搜索任何元素(CRT,READ,DLT,UPD)都将与输入数组匹配的权限.

I have a below data. Would like to search aclpermissions where any of the elements (CRT, READ, DLT, UPD) will match to an array of inputs.

查询下方

db.AMSAppACL.find({"aclpermissions.READ" : {'$in': ['58dc0bea0cd182789fc62fab']}}).pretty();

仅搜索READ元素.有什么方法可以搜索所有元素,而不是使用或查询和聚合

only searches READ element. Is there any way to search all the elements instead of using or queries and aggregate

{
        "_id" : ObjectId("5900d6abb9eb284a78f5a350"),
        "_class" : "com.debopam.amsapp.model.AMSAppACL",
        "attrUniqueCode" : "USER",
        "attributeVersion" : 1,
        "aclpermissions" : {
                "CRT" : [
                        "58dc0bd70cd182789fc62faa"
                ],
                "READ" : [
                        "58dc0bd70cd182789fc62faa",
                        "58dc0bea0cd182789fc62fab"
                ],
                "UPD" : [
                        "58dc0bd70cd182789fc62faa"
                ],
                "DLT" : [
                        "58dc0bd70cd182789fc62faa"
                ]
        },
        "orgHierachyIdentifier" : "14",
        "orgid" : 14,
        "createDate" : ISODate("2017-04-26T17:19:39.026Z"),
        "lastModifiedDate" : ISODate("2017-04-26T17:19:39.026Z"),
        "createdBy" : "appadmin",
        "lastModifiedBy" : "appadmin"
}

推荐答案

您应该尝试将架构的aclpermissions部分从动态键更新为带标签的键.

You should try updating aclpermissions part of schema from dynamic keys to labeled keys.

"aclpermissions":
     [
       {k:"CRT", v: ["58dc0bd70cd182789fc62faa"]},
       {k:"READ", v: [ "58dc0bd70cd182789fc62faa", "58dc0bea0cd182789fc62fab"]}....
     ]

现在您可以将查询从帖子更新为类似的内容

Now you can update the query from post to something like

db.AMSAppACL.find({"aclpermissions.v" : {'$in': ['58dc0bea0cd182789fc62fab']}}).pretty();

这篇关于Mongodb搜索嵌套数组元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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