猫鼬按不同集合中对象ID的计数排序
mongoose sort by count of object id in diffrerent collection
我有一个文章集,喜欢
var articleSchema = new Schema(
{
link: { type: String, required: true, unique: true },
title: { type: String },
description: {type: String },
source: { type: Schema.ObjectId, ref: 'sources' },
…
};
Source 通过 objectId 链接到 Source 架构。
var sourceSchema = new Schema(
{
name: { type: String, required: true, lowercase: true },
short_handle: { type: String, required: true, lowercase: true, unique: true },
website: { type: String, required: true, lowercase: true, unique: true },
…
}
我想做的事情:查询来源并根据链接到该来源的文章数量对它们进行排序。这有可能吗?
当您为每篇文章添加来源引用时,您将需要查询 Article
模型。需要执行聚合以按分组和排序的顺序获得所需的结果。
await Article
.aggregate([
{ "$group": {
"_id": '$source',
"articleCount": { "$sum": 1 }
}},
{ "$sort": { "articleCount": -1 } }
]);
此查询 returns 来源列表及其相关文章按排序顺序计数。就我而言,这是输出。
[ { _id: 5b7c7cf407d686e60a07e4e1, articleCount: 4 },
{ _id: 5b7c7cc707d686e60a07e4df, articleCount: 2 },
{ _id: 5b7c7ce407d686e60a07e4e0, articleCount: 1 } ]
我有一个文章集,喜欢
var articleSchema = new Schema(
{
link: { type: String, required: true, unique: true },
title: { type: String },
description: {type: String },
source: { type: Schema.ObjectId, ref: 'sources' },
…
};
Source 通过 objectId 链接到 Source 架构。
var sourceSchema = new Schema(
{
name: { type: String, required: true, lowercase: true },
short_handle: { type: String, required: true, lowercase: true, unique: true },
website: { type: String, required: true, lowercase: true, unique: true },
…
}
我想做的事情:查询来源并根据链接到该来源的文章数量对它们进行排序。这有可能吗?
当您为每篇文章添加来源引用时,您将需要查询 Article
模型。需要执行聚合以按分组和排序的顺序获得所需的结果。
await Article
.aggregate([
{ "$group": {
"_id": '$source',
"articleCount": { "$sum": 1 }
}},
{ "$sort": { "articleCount": -1 } }
]);
此查询 returns 来源列表及其相关文章按排序顺序计数。就我而言,这是输出。
[ { _id: 5b7c7cf407d686e60a07e4e1, articleCount: 4 },
{ _id: 5b7c7cc707d686e60a07e4df, articleCount: 2 },
{ _id: 5b7c7ce407d686e60a07e4e0, articleCount: 1 } ]