Igo*_* P. 3 mongoose mongodb node.js
我在MEAN环境中使用Mongoose.如何确保结果集中没有任何重复结果?示例:我的数据库包含10个(部分重复)名称:
当查询这个数据库中的'Allan'或者甚至只是'all'(使用.find(正则表达式...)并将返回的结果数量限制为5时,我得到这个:
有三个重复的'Allan'条目,我们浪费了很多结果多样性(谈论搜索输入字段的自动完成功能).我需要返回的结果集没有重复项,例如:
如果有的话,如何使用猫鼬实现这一目标?
您可以使用find建立查询,然后将调用链接到distinct生成的查询对象,以获取结果中的唯一名称:
var search = 'Allan';
Name.find({name: new RegExp(search)}).distinct('name').exec(function(err, names) {...});
Run Code Online (Sandbox Code Playgroud)
或者您可以将它们全部组合到distinct对模型的调用中,将查询对象作为第二个参数提供:
var search = 'Allan';
Name.distinct('name', {name: new RegExp(search)}, function(err, names) {...});
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,names都是一个只包含不同名称的数组,而不是完整的文档对象.
你也可以这样做aggregate,然后你可以直接限制结果的数量:
Name.aggregate([
{$match: {name: new RegExp(search)}},
{$group: {_id: '$name'}},
{$limit: 5}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7041 次 |
| 最近记录: |