2016-10-21 9 views
0

これは非常に特殊な問題かもしれないので、サポートされている解決策があるかどうかはわかりません。基本的に、私がやっている:Mongoose/Mongodbはそれぞれの型のちょうど1つを返す

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

を私は「あり」検索するのであれば、私は「ありません」という、「あった」、「あり」のようなものを買ってあげる、など

しかし、同じ正確なタイトルを持つ多くの回答があるかもしれません。たとえば、5つの回答があります。すべてが「I以上の人はいません」というタイトルがあります。このコードでは、5つすべてを他のすべてと共に戻します。特定のタイトルごとに1つの回答しか返せない方法はありますか?

のようにあなたは、検索と一緒に .distinct('title')を使用することができ

答えて

1

:あなたは、$ 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" 
     } 
    } 
]) 

を集約を使用することができます

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

これを実行し、各タイトルの1つだけを含む別々のモデルを保持することとのパフォーマンスの違いは何ですか?彼らは異なる目的のために異なる時間に照会されるでしょう。 – db2791

0

{[のようなものを返します。 _id: "titre 1"}、{_ id: "titre 2"}、...]

関連する問題