这可能是一个非常具体的问题,所以我不知道是否有支持它的解决方案。基本上,我正在做:
Response.find({ title : { "$regex": req.params.response_query, "$options": "i" } }, function (err, foundResponses) {
...}
因此,如果我搜索"那么",我会得到像#34;有","有","可以& #39; t"等
但是,可能有许多回复具有相同的标题。例如,可能有5个响应都有标题"没有比我大的人。"有了这段代码,我将把所有其中的5个和其他所有代码一起带回来。有没有办法我只能回复每个特定标题的一个回复?
答案 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"},...]