Как сравнить два массива, используя $ elemmatch в mongodb? - PullRequest
1 голос
/ 02 июля 2019

Мне нужно сравнить два массива, чтобы определить, соответствуют ли все элементы в первом массиве второму.

Первый массив:

var tasktime = [2,3,4];

Второй массив:

'working_days': [ 
                {
                    'slots': [ 8, 9, 14, 15 ]
                }
            ];

Мне нужно проверить, все ли элементы в массиве «tasktime» существуют в массиве «slots».

Ниже приведен запрос, который я пробовал, но не получил ожидаемых результатов.

var defaultCondition = [
                        {
                            query: {
                                "working_days": { $elemMatch: { slots: { $setIntersection: [ 'slots', tasktime ] } } }
                            }
                        }
                    ];

db.GetAggregation('tasker', defaultCondition, function (err, taskers) {
    if (err || !taskers[0]) {
        res.send({ count: 0, result: [] });
    } else {
        callback(err, taskers);
    }
});

Нужна чья-то ценная помощь в этом.

1 Ответ

0 голосов
/ 02 июля 2019

Вам нужно использовать $ all , чтобы найти все значения в массиве taskTime.

Вы можете просто сделать:

db.tasker.find({"working_days.slots" : {$all : taskTime}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...