Как написать запрос mongo для объединения данных из двух документов
у меня есть два документа, один является userRole(роль Мастера), а другой пользователь(роль Asssociated с пользователя),пользователь может иметь несколько ролей, и есть некоторые права применяется на уровне пользователя и роль уровня оба , я хочу принести отдельные разрешения от пользователя и userRole для конкретного пользователя и связать несколько ролей данного пользователя.
"userRole":{ "_id" : ObjectId("58902f6b5d474004b4034026"), "roleName" : "Filler", "permission" : { "ActionPermissions" : { "Incidence Management" : { "Trouble Ticketing" : { "Add Ticket" : {} } } } }, "associatePermission" : { "ActionPermissions" : { "Incidence Management" : { "Trouble Ticketing" : { "Add Ticket" : {}, "Bulk Closure" : true }, "Ageing Report" : { "Filter Report" : true } }, "Preventive Maintenance" : { "Edit Ticket" : { "Severity" : true } } }, "DataPermissions" : { "Incidence Management" : { "Trouble Ticketing" : { "Add Ticket" : {} } } } } }
Что я уже пробовал:
"user": { "_id" : ObjectId("58a29743f7d4180a4cae827e"), "firstName" : "dileep", "roles" : [ { "roleName" : { "_id" : "5890336b5d474004b403402c", "roleName" : "Ceo" }, "effectiveFrom" : "2017-02-16T18:30:00.000Z", "effectiveTo" : "2017-02-28T18:30:00.000Z", "id" : {} }, { "effectiveFrom" : "2017-02-16T18:30:00.000Z", "effectiveTo" : ISODate("2017-02-15T18:30:00.000Z"), "roleName" : "{\"_id\":\"5890335d5d474004b4034029\",\"roleName\":\"Engineer\"}" }, { "roleName" : { "_id" : "5890336b5d474004b403402c", "roleName" : "Ceo" }, "effectiveFrom" : "2017-02-16T18:30:00.000Z", "effectiveTo" : ISODate("2017-02-28T18:30:00.000Z"), "id" : {} }, { "roleName" : { "_id" : "589033795d474004b403402f", "roleName" : "WebUser" }, "id" : {} }, { "roleName" : { "_id" : "58a69b9a93e8e20854282001", "roleName" : "surbhi", "roleDescription" : "surbhi" }, "effectiveFrom" : "2017-02-23T18:30:00.000Z", "id" : 5 }, { "roleName" : { "_id" : "58aef573d90ffd185c96bb65", "roleName" : "ty", "roleDescription" : "" }, "effectiveFrom" : "2017-02-23T18:30:00.000Z", "id" : 6 } ], "groups" : [ { "groupName" : { "_id" : "5891d9e75d4740205401bd68", "groupName" : "Power Vendor" }, "effectiveFrom" : "2017-02-17T18:30:00.000Z", "id" : 1, "effectiveTo" : ISODate("2017-02-15T18:30:00.000Z") }, { "groupName" : { "_id" : "5891d9f15d4740205401bd6b", "groupName" : "Tower Co" }, "effectiveFrom" : "2017-02-21T18:30:00.000Z", "effectiveTo" : ISODate("2017-02-28T18:30:00.000Z"), "id" : 2 }, { "groupName" : { "_id" : "5891d9f15d4740205401bd6b", "groupName" : "Tower Co" }, "effectiveFrom" : "2017-02-21T18:30:00.000Z", "effectiveTo" : ISODate("2017-02-21T18:30:00.000Z"), "id" : 2 }, { "groupName" : { "_id" : "58a6bfa3ea436926ac06a234", "groupName" : "asdasd", "groupDescription" : "asd" }, "effectiveFrom" : "2017-02-27T18:30:00.000Z", "id" : 4 }, { "groupName" : { "_id" : "58a6958e93e8e20854282000", "groupName" : "anas", "groupDescription" : "this group is made for testing purpose." }, "effectiveFrom" : "2017-02-20T18:30:00.000Z", "id" : 5, "effectiveTo" : ISODate("2017-02-21T18:30:00.000Z") }, { "groupName" : { "_id" : "58a69dbb93e8e20854282002", "groupName" : "GP", "groupDescription" : "gp is for test" }, "effectiveFrom" : "2017-02-23T18:30:00.000Z", "effectiveTo" : "2017-03-01T18:30:00.000Z", "id" : 6 }, { "effectiveFrom" : ISODate("2017-02-26T18:30:00.000Z"), "groupName" : { "groupName" : "Tower CoMPANY", "_id" : "5891d9f15d4740205401bd6b" }, "effectiveTo" : null, "id" : 7 } ], "profilePic" : "UserProfilePic-1487050584447.jpg", "loginId" : "dileep123", "password" : null, "confirmPassword" : null, "imeiNumber1" : "222222222222222222", "middleName" : "kumara", "lastName" : "saxenaaaaaa", "primaryEmail" : "ok@gmail.com", "primaryPhoneNumber" : "1111111111", "associatePermission" : { "ActionPermissions" : { "Incidence Management" : {}, "User Management" : { "Users" : { "View" : true, "Add" : true } } }, "DataPermissions" : {} } }
Rahul Gour
нужно отдельное ассоциированное разрешение как от базы сбора на RoleID join..например, в коллекции пользователей, если у пользователя есть 2 разрешения и пользователь связан с 3 ролями, то все разрешения ролей должны быть приложены к этому документу,
выберите разрешение из роли
where roleID in (SELECT roleID from user where userID = 123)
Союз
Выберите разрешение от пользователя, где userID = 123;
я хочу написать запрос в MongoDB