显然,您知道哪些文件拥有哪些权利。我猜它是文档中的一个字段,例如:
{ 'foo':'bar'
'canRead':'sales' }
在会话开始时,您可以查询用户拥有的角色。说
{ 'user':'shennan',
'roles':[ 'users','west coast','sales'] }
您可以将该角色列表存储在用户的会话中。有了这些,剩下要做的就是使用$in
操作符添加角色,如下所示:
db.test.find({'canRead':{'$in':['users','west coast','sales']})
运算符的值$in
取自用户会话。这是在 mongo 控制台中自行尝试的代码:
db.test.insert( { 'foo':'bar', 'canRead':'sales' })
db.test.insert( { 'foo2':'bar2', 'canRead':['hr','sales'] })
db.test.insert( { 'foo3':'bar3', 'canRead':'hr' })
> db.test.find({}, {_id:0})
{ "foo" : "bar", "canRead" : "sales" }
{ "foo2" : "bar2", "canRead" : [ "hr", "sales" ] }
{ "foo3" : "bar3", "canRead" : "hr" }
销售人员无法读取带有“foo3”的文档:
> db.test.find({'canRead':{'$in':['users','west coast','sales']}}, {_id:0})
{ "foo" : "bar", "canRead" : "sales" }
{ "foo2" : "bar2", "canRead" : [ "hr", "sales" ] }