2016-08-29 2 views
0

나뭇 가지 프레임 워크에서 MongoDB를 사용하고 있습니다. 사용자가 특정 모듈에 액세스 할 수 있는지 확인하려고합니다.MongoDB 배열 내에 값이 있는지 확인하십시오.

session.get('__AUTH_USER').find({ approvedModules : { '$in' : ["examplemodule"]}}, { '$exists' : true }) 

(표준 기능을 따옴표로해야) :

_id: "579b50a4f5092761a20f4e71", 
approvedModules: [ 
"examplemodule", 
"examplemodule1", 
"examplemodule2", 
"examplemodule3" 
], 

내 코드는 다음과 같습니다처럼

(의 일부) 내 DB 항목이 보인다.

나는 계속 false를 반환합니다. 사용하는 경우에만 값을 반환 할 수 있습니다. session.get('__AUTH_USER').approvedModules.0 변경 될 수 있으므로 .0을 포함하고 싶지 않습니다.

내가 뭘 잘못하고 있니?

미리 감사드립니다.

+1

당신이 봤어'$ elemMatch'을 - https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ – DaveCoast

+0

답장을 보내 주셔서 감사합니다! 그래,하지만 같은 문제가 생겼어. session.get ('__ AUTH_USER'). find ({approvedModules : { '$ elemMatch': {*** 와일드 카드?! *** : "examplemodule"}}}}, { '$ 존재 ': true}) –

답변

0

내가 뭘 잘못하고 있니?

많은 것들. 최악의 경우는 템플릿 내부의 쿼리를 사용하는 것이지만 또 다른 문제입니다.

$in 연산자의 목적을 오해했습니다. 데이터베이스의 필드를 쿼리의 배열 요소와 일치시키는 데 사용됩니다.

는 간단한 $eq 할 수있는 하나의 값으로 컬렉션에 배열의 모든 요소를 ​​일치 시키려면 :

session.get('__AUTH_USER').find({ approvedModules : "examplemodule"}) 
+0

시도했는데 여전히 false를 반환합니다 –

+0

'{'$ exists ': true}'없이 시도 했습니까? 당신이 잘못하고있는 또 다른 일입니다. –

+0

예,하지만 그 이유는 무엇입니까? - 명확히하기 위해 내부의 {% if %} 문장 –

관련 문제