2016-10-21 3 views
0

이것은 매우 구체적인 문제 일 수 있으므로이를 지원하는 솔루션이 있는지 알 수 없습니다. 기본적으로, 내가 뭘 : 그래서Mongoose/Mongodb 정확히 각 유형 중 하나를 반환

Response.find({ title : { "$regex": req.params.response_query, "$options": "i" } }, function (err, foundResponses) { 
...} 

나는 "있다"와 같은, 내가 뭔가를 얻을 수 있습니다 "가"를 검색하면,

등, "이 수 없습니다", "이 있었다"

그러나 동일한 제목을 가진 많은 응답이있을 수 있습니다. 예를 들어, 5 개의 응답이 모두있을 수 있습니다. "I보다 큰 사람은 없습니다." 이 코드를 사용하면 5 개의 코드를 모두 다른 코드와 함께 되돌릴 수 있습니다. 각 특정 제목의 답변 하나만받을 수있는 방법이 있습니까? 같은 것을 [{반환합니다

Response.find({ title : { "$regex": req.params.response_query, "$options": "i" } }).distinct('name').exec(function (err, foundResponses) {...}); 

답변

1

당신은 같은 발견과 함께 .distinct('title')을 사용할 수 있습니다 _id : "titre 1"}, {_ id : "titre 2"}, ...]

+0

이 작업을 수행하는 것과 각 제목 중 하나만 포함하는 별도의 모델을 보유하는 것의 성능 차이는 무엇입니까? 그들은 다른 목적을 위해 다른 시간에 질문을받을 것입니다. – db2791

0

당신은 $ addToSet으로 집계을 사용할 수 있습니다

Response.aggregate([ 
    { 
     $match:{ 
     title:{ 
      "$regex": req.params.response_query, "$options": "i" 
     } 
     } 
    }, 
    { 
     $group:{ 
     _id:null, 
     title:{$addToSet:"$title"} 
     } 
    } 
]) 

Will return something like : { "_id" : null, "type" : [ "titre 1", "titre 2" ] } 

또는

Response.aggregate([ 
    { 
     $match:{ 
     title:{ 
      "$regex": req.params.response_query, "$options": "i" 
     } 
     } 
    }, 
    { 
     $group:{ 
     _id:"$title" 
     } 
    } 
]) 

을 :

관련 문제