2016-06-02 9 views
0

에 나는 결합 된 제 1 및 제 성과 이름의 조합을 검색 할 내가에 집계를 수행하고 기본 문서가있는 경우 :몽구스 집계 일치하는 배열

내 문서 :

{ 
    _id: dmw9294r94 
    firstName: "John", 
    lastName: "Smith", 
    friends: [28enw93hr, 29nwgkn38] 
} 

내 총 pipline :

User.aggregate([ 
    { 
     $project: { 
      "name" : { $concat : [ "$firstName", " ", "$lastName" ] }, 
      "firstName": "$firstName", 
      "lastName": "$lastName", 
      "username": "$username", 
      "friends": "$friends"} 
    },{ 
     $match: { 
      "name": {$regex: new RegExp(req.query.query, "i") 
     } 
    }}]).exec(function(err, results){ 
     res.json(results); 
    } 
); 

특정 사용자 ID가 사용자 friends 배열 내에있는 경우 어떻게 확인이에 추가 할 수 있습니까?

{$ 일치 :

$match: { 
    "name": {$regex: new RegExp(req.query.query, "i"), 
    "friends" {$eq: myVarHere} 
} 
+0

'$ eq'을'$ in'으로 변경합니다. [more here] (https://docs.mongodb.com/manual/reference/operator/query/in/) – profesor79

+0

'$ in'도 시도했지만 여전히 운. – Fizzix

+0

배열에서 검사하는 경우'$ in'과 (과) 같이 동작합니다. 나는 배열에 값이 있는지 검사하면서 다른 방법을 시도하고있다. – Fizzix

답변

0

@ profesor79 말했듯이 당신은 당신이에 관심이있는 사용자 ID에 대한 $ 일치해야 : 운이 없었더라도

나는 다음을 시도 { " friends ":"user_id_to_find ")}

질문을 이해하지 못한다면, 여기서는 $ 정규식이 필요 없다고 생각됩니다.

+0

'$ regex'는'firstName'과'lastName'의 조합을 검색하는 데 사용됩니다. 그 질문에별로 관련이 없으니 여기에 그걸 포함시킬 생각이라고. – Fizzix