我正在尝试在多个匹配和查找阶段后获取记录总数。我知道count属性给出了1个Matching阶段的计数,但是如果我在聚合中有两个或多个Match阶段,并且在那些Match阶段之间,我也会有lookup阶段。如何获得准确的计数?这是我的总数。
pipeline = [
{
$match: {
statusRepositoryId: new ObjectId(filter.statusRepositoryId),
},
},
{
$lookup: {
from: "Parcel",
localField: "parcelId",
foreignField: "_id",
as: "parcel",
},
},
{
$unwind: {
path: "$parcel",
},
},
{
$lookup: {
from: "ParcelStatus",
localField: "parcel._id",
foreignField: "parcelId",
as: "parcel.parcelStatuses",
},
},
{
$lookup: {
from: "CustomerData",
localField: "parcel.customerDataId",
foreignField: "_id",
as: "parcel.customerData",
},
},
{ $unwind: "$parcel.customerData" },
{
$match: {
"parcel.customerData.cityId": new ObjectId(filter.cityId),
},
},
{ $count: "count" },
];
数据
[
{
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-18T14:56:45.587Z",
"updatedAt": "2020-09-18T14:56:45.587Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2de",
"reason": "cancelled",
"checkboxDataArray": [
"Refused to receive the parcel"
],
"riderId": "5f45ffc61ffedf439ac610c8",
"image": "https://swyft-attachments-v1.s3.ap-south-1.amazonaws.com/MarkParcelStatus/2ac5fe70-f9bf-11ea-86b3-111fc7495e46.jpeg",
"parcel": {
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-14T14:12:37.835Z",
"updatedAt": "2020-09-18T15:36:55.525Z",
"vendorParcelId": "272837",
"orderType": "COD",
"boxType": "Flyer",
"amount": 2550,
"qty": 2,
"originCityId": "5ee134da0138634c27a6e1dd",
"pickupLocationId": "PL-687422",
"description": "DPL20 555 Suit UPC: LA01611-Std-MLT UPC: custom:Lawn custom:2 Pc Shirt | Lawn Dupatta UPC: 1DPL20 550 Suit UPC: LA01606-Std-YLW UPC: custom:Lawn custom:2 Pc Shirt | Lawn Dupatta UPC: 1",
"weight": 1,
"additionalServices": [],
"isPickedUp": true,
"paymentMode": "cash",
"isProcessed": true,
"isOnline": true,
"customerDataId": "5f5f7a55df396137fdd64cd9",
"currentStatusId": "5dd7fa20dcfa9600152cc2d8",
"previousStatusId": "5dd7fa20dcfa9600152cc2de",
"loadsheetId": "LS-005966",
"zoneAreaId": "ZONE_NOT_DEFINED",
"parcelStatuses": [
{
"_id": "5f5f7a55df396137fdd64cda",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-14T14:12:37.842Z",
"updatedAt": "2020-09-14T14:12:37.842Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2e1"
},
{
"_id": "5f631ca20ecb1f33c089e87e",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-17T08:21:54.750Z",
"updatedAt": "2020-09-17T08:21:54.750Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2dd"
},
{
"_id": "5f6382057e4a061b28f9c23d",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-17T15:34:29.687Z",
"updatedAt": "2020-09-17T15:34:29.687Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2d8"
},
{
"_id": "5f64426caa7f835b423dc2aa",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-18T05:15:24.439Z",
"updatedAt": "2020-09-18T05:15:24.439Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2e3",
"riderId": "5f45ffc61ffedf439ac610c8"
},
{
"_id": "5f64426daa7f835b423dc2c9",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-18T05:15:25.314Z",
"updatedAt": "2020-09-18T05:15:25.314Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2e2",
"riderId": "5f45ffc61ffedf439ac610c8"
},
{
"_id": "5f64caadee163f6696f8439a",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-18T14:56:45.587Z",
"updatedAt": "2020-09-18T14:56:45.587Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2de",
"reason": "cancelled",
"checkboxDataArray": [
"Refused to receive the parcel"
],
"riderId": "5f45ffc61ffedf439ac610c8",
"image": "https://swyft-attachments-v1.s3.ap-south-1.amazonaws.com/MarkParcelStatus/2ac5fe70-f9bf-11ea-86b3-111fc7495e46.jpeg"
},
{
"_id": "5f64d417cb02f27072f144c8",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-18T15:36:55.480Z",
"updatedAt": "2020-09-18T15:36:55.480Z",
"statusRepositoryId": "5dd7fa20dcfa9600152cc2d8",
"adminManagerId": "5dd7fa20dcfa9600152cc2d4"
}
],
"customerData": {
"firstName": "Riffat",
"email": "riffatfhm@yahoo.com",
"lastName": "faheem ",
"address": "476A dhoke gujran misrial road Rawalpindi ",
"addressLocation": {
"lat": 33.601617,
"lng": 72.9913365
},
"cityId": "5ee134da0138634c27a6e1dc",
"parcelId": "RWP900001170670",
"vendorId": "5eeb04af35109774c533cb55",
"createdAt": "2020-09-14T14:12:37.833Z",
"updatedAt": "2020-09-17T08:22:06.456Z",
"customerId": "5f5f7a55df396137fdd64cd8",
"customer": {
"phone": "3345174367",
"createdAt": "2020-09-14T14:12:37.827Z",
"updatedAt": "2020-09-14T14:12:37.827Z",
"id": "5f5f7a55df396137fdd64cd8"
},
"id": "5f5f7a55df396137fdd64cd9"
},
"id": "RWP900001170670"
},
"id": "5f64caadee163f6696f8439a"
}
]
答案 0 :(得分:0)
OP可能希望主集合中stateRepositoryId
等于某物的项目计数,并通过联接链接cityId
等于某物的项目计数。在pseudoSQL中:
select count(*) from maintable
left outer join parceltable._id = maintable.parcelId
left outer join customertable._id = parceltable.customerDataID
where maintable.stateRepositoryID = 'ABC'
and customertable.cityID = 'NYC'
假设主集合为foo
,宗地集合为foo_parcel
,客户数据集合为foo_cust
。这是使用pipeline
的{{1}}功能进行嵌套查询的方法:
$lookup