Рассмотрим, у меня есть эти три примера схемы, где mainScheam является фактическим документом, а другие схемы ("activitySchema", "essentialSchema") являются поддокументами.
Я использовал псевдотипы в схемах только для примера Цель и ясное понимание
Схемы
let activitySchema = new Schema({
"_id":ObjectID,
"title":string,
"created_at":new Date(),
"created_by":ObjectID,
});
let essentialSchema = new Schema({
"_id":ObjectID,
"activity":[activitySchema],
"created_at":new Date(),
"created_by":ObjectID,
});
let mainSchema = new Schema({
"_id":ObjectID,
"name":string,
"activity":[activitySchema],
"essential":[essential],
"created_at": new Date(),
"created_by":ObjectID,
});
let Main = mongoose.model("main", mainSchema);
Основной документ в базе данных похож на этот
{
"id":"...",
"name":"rpc",
"activity":[{
"_id":"...",
"title":"abc de",
"created_at":12345...,
"created_by":"...",
}, {
"_id":"...",
"title":"defg",
"created_at":12467...,
"created_by":"...",
}],
"essential":[{
"_id":"...",
"activity":[{
"_id":"...",
"title":"usidl kdsl",
"created_at":2128...,
"created_by":"...",
}],
"created_at":2125...,
"created_by":"...",
}],
"created_at":2105...,
"created_by":"...",
}
Теперь я должен узнать последние / последние действия из Выше mainSchema и вложенных документов Из вышеприведенного примера я должен вернуть отсортированную активность в соответствии с временем создаваемого времени.
{
"_id":"...",
"title":"usidl kdsl",
"created_at":2128...,
"created_by":"...",
}
Я использую статистические данные, но не знаю, как достичь своей цели?
const mains = await Main.aggregate([
{
$project:{
"name":"$name",
"last_activity":sort("$activity", "$essential.activity"), //-- This is the part where I don't know what to do
"created_at":"$created_at",
},
}
]);