MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Determine com eficiência o proprietário de um registro em uma hierarquia com o MongoDB


Se você está tentando "selecionar" registros do MongoDB com base em uma "coluna" com um valor de um conjunto de valores possíveis que você precisaria de uma junção em uma tabela de gerenciamento de usuários para determinar, o NoSQL está trabalhando contra você...

Se a lista de IDs de usuário ainda for gerenciável, você pode fazer um where ownerId in (?,?,?,?,?...) tipo de consulta (depois de determinar primeiro a lista):
db.documents.find({owner:{$in: [1234, 2345, 4444, 77777, 99999]}})

A maneira NoSQL provavelmente é desnormalizar as coisas, por exemplo, incluindo não apenas o ownerId no documento, mas o caminho completo até a hierarquia de gerenciamento:
{  _id: 'the document A',
   owner : 1234,
   managers: [ 2345, 4444, 77777, 99999 ]
}

Claro, isso precisará ser atualizado quando a hierarquia do usuário for alterada.