#node.js #mongodb #mongoose #aggregation-framework
#node.js #mongodb #мангуст #агрегация-фреймворк
Вопрос:
Я реализовал разбивку на страницы на стороне сервера. Сортировка не работает по дате (remixers.details.request.at ). Я использую $unwind для деконструкции массива, а затем поиска, пропусков, ограничения. Это мой запрос:
await Brief.aggregate([
{
$lookup: {
from: "genres",
localField: "genres",
foreignField: "_id",
as: "genres",
},
},
{
$lookup: {
from: "territories",
localField: "territories",
foreignField: "_id",
as: "territories",
},
},
{
$lookup: {
from: "users",
localField: "briefAgent.agentId",
foreignField: "_id",
as: "briefAgent.agentId",
},
},
{
$lookup: {
from: "originaltracks",
localField: "originalTracksID",
foreignField: "_id",
as: "originaltrackdetail",
},
},
{
$addFields: {
originalTracksID: { $arrayElemAt: ["$originaltrackdetail", 0] },
},
},
{ $unwind: "$remixers" },
{ $sort: { "remixers.details.request.at": -1 } },
{
$project: {
originaltrackdetail: 0,
},
},
{ $skip: skip },
{ $limit: PAGE_SIZE }`
])
Редактировать:
brief имеет массив remixers, который указывает на другую коллекцию remixerProfile и получает данные соответственно
Вот моя краткая модель схемы:
new mongoose.Schema(
{
uid: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: [true, "User id is Required"],
},
briefName: {
type: String,
trim: true,
required: [true, "Brief Name is Required"],
},
remixers: {
default: undefined,
type: Array,
_id: {
type: mongoose.Schema.Types.ObjectId,
ref: "RemixerProfile",
},
requestStatus: {
type: Boolean,
default: false,
},
requestedAt: {
type: Date,
},
requestStatusDisplay: {
type: String,
},
requestNote: {
type: String,
},
},
selectionMax: {
type: Number,
},
originalTracksID: {
type: mongoose.Schema.Types.ObjectId,
ref: "originalTracks",
},
details: {
type: Object,
request: {
type: Object,
},
},
},
{
versionKey: false,
timestamps: { createdAt: "created", updatedAt: "updated" },
}
);
Кто-нибудь может мне помочь?
Комментарии:
1. пожалуйста, добавьте образец документа или структуру схемы в свой вопрос.
2. Откуда
remixers
берется?3. Я отредактировал и добавил краткую схему