我需要在我的Users
集合中的每个文档中存储角色ID和角色名称。我需要能够说“获取具有xyz角色的用户”或“获取具有名称包含'XYZ'的角色的用户”,这样的话。
在Mongo中甚至可以吗?
现在,我正在存储这样的数据:
{
"_id": {
"$id": "4fe30e3db92f5d2a5c000000"
},
"alias": "rogue_coder",
"display_name": "Rogue Coder",
"email": "rogue@example.com",
"roles": {
"4fe30e5fb92f5d6f53000000": "Super Administrator"
}
}
有了这个,我可以看到一个用户是否有一个给定的角色,但我无法让所有角色都包含“超级”的用户。关于如何做到这一点的任何想法?
答案 0 :(得分:1)
MongoDB支持正则表达式以匹配键的值。
答案 1 :(得分:1)
不确定,但你可能会尝试这样的
db.collection.find( { roles: { /super.*/i } );
答案 2 :(得分: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"
]
}