是否有内置函数可以跨所有记录获取数组字段中的所有唯一值?
Is there a built-in function to get all unique values in an array field, across all records?
我的架构如下所示:
var ArticleSchema = new Schema({
...
category: [{
type: String,
default: ['general']
}],
...
});
我想解析所有记录并在所有记录中查找此字段的所有唯一值。这将通过服务调用发送到前端,用于对标记文章进行前瞻搜索。
我们可以遍历每条记录,运行遍历每个数组值并进行检查,但这将是 O(n2).
是否有现有的功能或其他性能更好的方法?
您可以使用 distinct
函数获取所有文档的所有 category
数组字段的唯一值:
Article.distinct('category', function(err, categories) {
// categories is an array of the unique category values
});
在 category
上建立索引以获得最佳性能。
我的架构如下所示:
var ArticleSchema = new Schema({
...
category: [{
type: String,
default: ['general']
}],
...
});
我想解析所有记录并在所有记录中查找此字段的所有唯一值。这将通过服务调用发送到前端,用于对标记文章进行前瞻搜索。
我们可以遍历每条记录,运行遍历每个数组值并进行检查,但这将是 O(n2).
是否有现有的功能或其他性能更好的方法?
您可以使用 distinct
函数获取所有文档的所有 category
数组字段的唯一值:
Article.distinct('category', function(err, categories) {
// categories is an array of the unique category values
});
在 category
上建立索引以获得最佳性能。