MongoDB检查数组中是否存在值

时间:2016-08-29 12:57:38

标签: mongodb symfony

我在一个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,因为这可能会改变。

我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:0)

  

我做错了什么?

很多事情。最糟糕的是在模板中使用查询到数据库,但这是另一个问题。

您误解了pip运算符的用途,该运算符用于将数据库中的字段与查询中的任何数组元素进行匹配。

要将集合中数组的任何元素与单个值匹配,您可以执行简单的$in

$eq

答案 1 :(得分:0)

使用$in运算符时,需要有2个输入参数,第一个是要检查数组的值,第二个应该是数组本身。 因此,您的bson元素应如下所示: isModuleInArray : { '$in' : ["examplemodule","$approvedModules"] }