我在一个twig框架中使用MongoDB。我正在尝试确定用户是否可以访问某个模块。
(部分)我的数据库条目如下:
_id: "579b50a4f5092761a20f4e71",
approvedModules: [
"examplemodule",
"examplemodule1",
"examplemodule2",
"examplemodule3"
],
我的代码如下:
session.get('__AUTH_USER').find({ approvedModules : { '$in' : ["examplemodule"]}}, { '$exists' : true })
(标准函数必须在引号中)。
我一直都是假的。我只能在使用session.get('__AUTH_USER').approvedModules.0
时返回值
我不想包含.0
,因为这可能会改变。
我做错了什么?
提前致谢!
答案 0 :(得分:0)
我做错了什么?
很多事情。最糟糕的是在模板中使用查询到数据库,但这是另一个问题。
您误解了pip
运算符的用途,该运算符用于将数据库中的字段与查询中的任何数组元素进行匹配。
要将集合中数组的任何元素与单个值匹配,您可以执行简单的$in
:
$eq
答案 1 :(得分:0)
使用$in
运算符时,需要有2个输入参数,第一个是要检查数组的值,第二个应该是数组本身。
因此,您的bson元素应如下所示:
isModuleInArray : { '$in' : ["examplemodule","$approvedModules"] }