如何在mongodb中使用$ elemmatch比较两个数组?

时间:2019-07-02 08:27:32

标签: mongodb mongodb-query

我需要比较两个数组,以查找第一个数组中的所有元素是否与第二个数组匹配。

第一个数组:

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 :(得分:0)

您需要使用$all来查找taskTime数组中的所有值。

您可以轻松做到:

db.tasker.find({"working_days.slots" : {$all : taskTime}});