#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:[]}})