#php #database #laravel #mongodb #nosql
Вопрос:
Я создаю приложение Laravel, которое связано с MongoDB. Теперь я столкнулся с проблемой при запросе данных из базы данных.
table name: Employee
[
{
"_id": 1,
"name": "user 1",
"managers": [
{
"id": 321,
"user_id": 1,
"ack_groups: [
["2","3", "4"],
["2", "5", "6"]
]
},
......
]
},
{
"_id": 2,
"name": "user 2",
"managers": [
{
"id": 3213,
"user_id": 2,
"ack_groups: [
["6","7", "8"],
["2", "5", "6"]
]
},
......
]
},
{
"_id": 3,
"name": "user 3",
"managers": [
{
"id": 321,
"user_id": 3,
"ack_groups: [
["8","9", "14"],
["12", "15", "16"]
]
},
......
]
},
]
Я пытаюсь запросить список данных о сотрудниках из таблицы сотрудников с некоторыми условиями. Условие состоит в том, что я хочу получить список сотрудников, где ac_groups
в managers
равном 2.
Тогда результат должен быть:
[
{
"_id": 1,
"name": "user 1",
"managers": [
{
"id": 321,
"user_id": 1,
"ack_groups: [
["2","3", "4"],
["2", "5", "6"]
]
},
......
]
},
{
"_id": 2,
"name": "user 2",
"managers": [
{
"id": 3213,
"user_id": 2,
"ack_groups: [
["6","7", "8"],
["2", "5", "6"]
]
},
......
]
},
]
Что я пробовал в коде: Employee::where('verify_routes.managers.ack_groups', '=', "2")->get();
Комментарии:
1. можно ли это сделать с помощью aggregate ?
2. @mohammadNaimi не могли бы вы показать мне, как это сделать с aggregate? выполнив необработанный запрос?
3. это моя агрегация в mongodb, а не в laravel mongoplayground.net/p/t5aI8Drpi6u
Ответ №1:
Форум: «Найти в массиве значение»
Это должно сработать:
Employee::where('verify_routes.managers.ack_groups', 'all', [2])->get();