2016-08-11 7 views
0

와 Node.js를에 '$ 또는'쿼리를 만들 수는 없지만, 쿼리 내가 DB에서 검색 할 데이터를 수신 할 수없는 그냥 말하는 유지

나 :

"Error :MongoError: Can't canonicalize query: BadValue $and/$or/$nor must be a nonempty array"

또는 I 쿼리로 $ 또는 {}

"Error :MongoError: Can't canonicalize query: BadValue $or needs an array"

감사 초기화합니다.를! 예를 들어

:

var user = { 
 
     name:"Toby", 
 
     gender:"Female", 
 
     contact:[ 
 
     {email:"[email protected]"}, 
 
     {email:"[email protected]"}, 
 
     {email:"[email protected]"}]}; 
 
var query = {}; 
 
var q = ['[email protected]','[email protected]']; 
 
query.name = user.name; 
 
if(user.contact!=null){ 
 
    query.$or = []; 
 
    query.$or['contact.0.email'] = q[0]; 
 
    query.$or['contact.1.email'] = q[1]; 
 
}

+0

같은 SQL 명령이 : 사용자가 SELECT * FROM WHERE에 대한 email='[email protected] 'OR email='[email protected]'AND 이름 = '토비' – yycctt

+0

감사 당신의 대답! 또 다른 해결책도 있습니다 : query1.contact = {$ elemMatch : {email : {}}}; query1.contact. $ elemMatch.email. $ in = q; – yycctt

답변