我正在使用這個 mongo db 聚合管道通過我從請求引數中獲得的許多因素來過濾客戶。除了 $skip 聚合之外,一切似乎都運行良好。即使我對引數進行硬編碼,管道也拒絕跳過。幫助。我歡迎任何幫助,甚至指出管道是否有效
const result = await Customers.aggregate([
{
$match: {
dateCreated: { $gt: new Date(startDate) },
dateCreated: { $lt: new Date(endDate) },
},
},
{
$lookup: {
from: 'orders',
localField: '_id',
foreignField: 'user',
as: 'ordersValue',
},
},
{
$lookup: {
from: 'transactions',
localField: '_id',
foreignField: 'user',
as: 'balance',
},
},
{
$addFields: {
balance: { $sum: '$balance.amount' },
ordersValue: { $sum: '$ordersValue.amount' },
},
},
{
$match: {
$and: [
{
balance: { $lt: Number(balanceLower) },
},
{
balance: { $gt: Number(balanceHigher) },
},
],
},
},
{
$match: {
$and: [
{
ordersValue: { $gt: 1 * Number(ordersValueLower) },
},
{
ordersValue: { $lt: 1 * Number(ordersValueHigher) },
},
],
},
},
{
$facet: {
count: [{ $count: 'queryCount' }],
data: [
{
$sort: {
_id: orderFactor,
},
},
{
$limit: limit * 1,
},
{
$skip: (page - 1) * limit,
},
],
},
},
]);
const count = result[0].count[0].queryCount;
const totalPages = Math.ceil(count / limit);
uj5u.com熱心網友回復:
$limit您應該切換and的順序$skip。$skip應該先走:
{
$skip: (page - 1) * limit,
},
{
$limit: limit * 1,
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525216.html
