.pipe(scss({ outputStyle: 'compressed' }))
.pipe(sass({ outputStyle: 'compressed' }))
const data = await this._db.collection('counters').aggregate([
{ $match: { "objectId": { $exists: true } } },
{ $project: {
_id: 0, // Исключаем поле _id из вывода
last: "$objectId.last", // Получаем значение last из объекта objectId и кладем в поле last
start: "$objectId.start", // Аналогично для start
end: "$objectId.end" // Аналогично для end
}
}
]).toArray();
// data будет массивом документов, и каждый документ будет содержать только поля last, start и end
Collect.aggregate([
{ $match: { $text: { "$search": "слово" } } },
{ $lookup: {
from: "colors",
let: { id: "$_id" }, // Определяем переменную id для использования внутри $lookup
pipeline: [
{ $match: {
$expr: { $and: [
{ $eq: ["$uid", "$$id"] }, // Сравниваем uid с id из основного документа
{ $gte: ["$rgb.r", 147] }, // Диапазон значений для красного цвета
{ $lte: ["$rgb.r", 167] },
{ $gte: ["$rgb.g", 136] }, // Зеленого
{ $lte: ["$rgb.g", 156] },
{ $gte: ["$rgb.b", 107] }, // Синего
{ $lte: ["$rgb.b", 127] },
{ $lte: ["$prevail", 1] } // Условие для поля prevail
]}
}}
],
as: "colors"
}
},
{ $match: { "colors": { $ne: [] } } }, // Фильтрация документов с ненулевым массивом colors
{ $sort: { "createdAt": -1 } },
{ $limit: 10 }
])
Collect.aggregate([
{ $match: { $text: {"$search": "слово"}} },
{ $lookup: {
from: "colors",
let: { id: "$_id" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: ["$uid","$$id"] },
{ $eq: ["$color", "red"] }
]
}
}
},
{ $limit: 1 } // Ограничиваем до одного документа, если нам не нужны все цвета
],
as: "colors"
}
},
{ $match: { "colors.0": {$exists: true} } }, // Проверить, что результат не пустой
{ $sort: {createdAt: -1} },
{ $skip:0 },
{ $limit: 10 }
])