Mongodb, запрос в пределах значений пары ключей

#javascript #typescript #mongodb #mongodb-query

Вопрос:

Есть ли какой-либо способ выполнить запрос внутри этой структуры с помощью ключей объектов roles ?

    interface UsersModel{
         _id: string;
         email: string;
         roles: { [key: string]: RolesType[] };
    }
 

На данный момент я получаю данные в users виде:

 roles: {
   $ne: null
}
 

и затем

 const finalResult = users.filter(u => Object.keys(u.roles).includes('objectKeyIwant'));
 

Можно ли это сделать на стороне mongodb и избежать получения всех данных, а затем отфильтровать их?

Примеры данных: Коллекция пользователей выглядит следующим образом:

 {
    _id: '610baff85c071a2bd59dc84f',
    email: 'some@email.com',
    roles : {
        "shop1" : [ 
            "shop_stock_manager"
        ],
        "shop2" : [ 
            "shop_admin", 
            "shop_stock_manager"
        ]
    }
}
 

И я хочу получить всех пользователей, которые играют какую-либо роль shop2 .

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

1. Можете ли вы поделиться некоторыми образцами данных и ожидаемыми результатами?

2. не могли бы вы предоставить образец json одного из ваших пользовательских документов ?

3. Ребята, я добавил детали в вопрос.

4. не могли бы вы проверить мой ответ ?

Ответ №1:

используйте это

 db.collection.find({"roles.shop2":{$ne:[]}})