0

我需要在我的Users集合中的每个文档中存储角色 ID 和角色名称。我需要能够说“获取具有 xyz 角色的用户”或“获取具有名称包含 'XYZ' 的角色的用户”,诸如此类。

这在蒙戈甚至可能吗?

现在,我正在存储这样的数据:

{
    "_id": {
        "$id": "4fe30e3db92f5d2a5c000000"
    },
    "alias": "rogue_coder",
    "display_name": "Rogue Coder",
    "email": "rogue@example.com",
    "roles": {
        "4fe30e5fb92f5d6f53000000": "Super Administrator"
    }
}

有了它,我可以查看用户是否具有给定角色,但我无法获取所有具有包含“超级”一词的角色的用户。关于如何做到这一点的任何想法?

4

3 回答 3

1

MongoDB 支持用于匹配键值的正则表达式。

看看这个MongoDB 正则表达式

于 2012-07-04T13:52:43.683 回答
1

不确定,但你可以试试这样

db.collection.find( { roles: { /super.*/i } );
于 2012-07-04T14:12:40.130 回答
1

根据您的尝试,您可能必须将 role_id 和 role_name 存储在单独的数组中,如下所示:

{
    "_id": {
        "$id": "4fe30e3db92f5d2a5c000000"
    },
    "alias": "rogue_coder",
    "display_name": "Rogue Coder",
    "email": "rogue@example.com",
    "role_names": [
        "Super Administrator"
    ],
    "role_ids" : [
        "4fe30e5fb92f5d6f53000000"
    ]
}
于 2012-07-04T14:34:53.303 回答