Как написать агрегированный запрос MongoDBs

#mongodb #mongodb-query #aggregation-framework

Вопрос:

Я новичок в mongodb и node js, и я пытаюсь сопоставить значение из таблицы, в которой соединены две таблицы.

 private async FunDCT_GetPermissionCount(cSearchFilterQuery) {  const oCount = await Permission.aggregate([  cSearchFilterQuery,  {  $lookup: {  from: "gen_accesstypes",  localField: "iAccessTypeID",  foreignField: "_id",  as: "oAccessTypeListing"  }  },  { $unwind: "$oAccessTypeListing" },  ], function (err, documents) {  if (err) { return false; }  return documents;  });   return oCount.length;  

Я должен сопоставить значение с oAccessTypeListing . oAccessTypeListing есть cAccessName столбец, и я должен соответствовать ему, но я не знаю, может ли кто-нибудь помочь мне.

Мой запрос, который не работает:

 cSearchFilterQuery = { $match: { $or: [{ "cAccessName": { "$regex": 'filter string', "$options": "i" } }] } };  

oCount возвращает объект:

 [    {  "_id": "6107a244f5399e480c97371e",  "cAdd": "N",  "cEdit": "N",  "cView": "Y",  "cDelete": "N",  "iAccessTypeID": "5fc50acbd4e25f2318c4196c",  "iProcessID": "5ff81e4eeb2477320447cd3f",  "iStatusID": "5fc4f96dd4e25f2318c4194e",  "iEnteredby": "5fc50ad530bb6544245885ff",  "tEntered": "2021-08-02T07:44:04.868Z",  "__v": 0,  "oPermissionListing": {  "_id": "5fc4f96dd4e25f2318c4194e",  "cStatusCode": "ACTIVE",  "cStatusName": "Active",  "cStatusDesc": "Active Records"  },  "oAccessTypeListing": {  "_id": "5fc50acbd4e25f2318c4196c",  "cAccessCode": "Member",  "cAccessName": "Member",  "cAccessDesc": "Member User",  "iStatusID": "5fc4f96dd4e25f2318c4194e",  "iUpdatedby": "5fc50ad530bb6544245885ff",  "tUpdated": "2020-11-30T17:26:58.707Z",  "iEnteredby": "5fc50ad530bb6544245885ff",  "tEntered": "2020-12-30T06:13:08.589Z"  },  "oProcessListing": {  "_id": "5ff81e4eeb2477320447cd3f",  "cProcessCode": "LIST_TEMPLATE",  "cProcessName": "LIST Template",  "cProcessDesc": "LIST Template",  "iStatusID": "5fc4f96dd4e25f2318c4194e"  },  "oUserListing": {  "_id": "5fc50ad530bb6544245885ff",  "iAccessTypeID": "5fc50ab9d4e25f2318c4196a",  "cEmail": "mpatil@shipco.com",  "cPassword": "$2a$10$ti5Zsy7uwIlP7MPlvW1DkuNNR4ynpotWbTRWqsevPiGPbkK0OzeCu",  "cAvatar": "//www.gravatar.com/avatar/ea2e738c91b6c65f1d88cf5cf1d4ead1?s=200amp;r=pgamp;d=mm",  "cName": "Mayur Patil",  "cUsername": "mpatil",  "cCompanyname": "ALLINK",  "cAddress": "PNQ",  "cCity": "PNQ City",  "cPostalcode": "PNQ Postalcode",  "cState": "PNQ State",  "cPhone": "PNQ Phone",  "cFax": "PNQ FAX",  "iStatusID": "5fc4f96dd4e25f2318c4194e",  "tEntered": "2020-11-30T15:08:05.024Z",  "__v": 0,  "cPwdToken": "958402",  "iUpdatedby": "5fc50ad530bb6544245885ff",  "tUpdated": "2021-05-27T12:59:54.389Z"  }  }  ]  

Комментарии:

1. Пожалуйста, поделитесь данными двух таблиц, какие данные вы хотите получить в результате

2. Условие cSearchFilterQuery, поставленное после размотки

3. @MaheshBhatnagar я добавил объект oCount и выполнил условие запроса csearchfilter, поставленное после размотки, но это не работает

4. @MaheshBhatnagar я должен сопоставить значение с oAccessTypeListing . это произошло cAccessName .

5. Список типов. Использование имени caccess