#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