Mongoose / Mongodb只返回每种类型中的一种

时间:2016-10-21 02:23:14

标签: node.js mongodb mongoose

这可能是一个非常具体的问题,所以我不知道是否有支持它的解决方案。基本上,我正在做:

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

因此,如果我搜索"那么",我会得到像#34;有","有","可以& #39; t"等

但是,可能有许多回复具有相同的标题。例如,可能有5个响应都有标题"没有比我大的人。"有了这段代码,我将把所有其中的5个和其他所有代码一起带回来。有没有办法我只能回复每个特定标题的一个回复?

2 个答案:

答案 0 :(得分:1)

您可以将.distinct('title')与find一起使用,例如:

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

答案 1 :(得分: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"
      }
   }
])

会返回类似[{_id:" titre 1"},{_ id:" titre 2"},...]