Сопоставление массивов Монго с различными полями - PullRequest
0 голосов
/ 10 июля 2019

Это пример документа заказа, который у меня есть

//Order 
{
    other fields,
    expertise = [
       { industry: "I1", service: "S1", competence: "C1", qualified: true },
       { industry: "I1", service: "S1", competence: "C2" }
    ]
}

Это пример документа пользователя

// Пользователь 1

{
    other fields,
    expertise = [
        { industry: "I1", service: "S1", competence: "C1", qualified: true },
        { industry: "I1", service: "S1", competence: "C2" }
    ]
}

//User 2
{
    other fields,
    expertise = [
        { industry: "I1", service: "S1", competence: "C1", qualified: false },
        { industry: "I1", service: "S1", competence: "C2" }
    ]
}

Квалифицированный атрибут является логическим и необязательным.

Требуется найти подходящего пользователя для данного заказа (используя опыт).

Вся экспертиза в заказе должна включать в себя с объектом пользователя. Но,

  1. Для того, чтобы qualified было true в expertise, нужно вернуть Users с qualified, это true

  2. Если qualified равно false в expertise, необходимо вернуть Users, оба qualified равны true и false

Следующий запрос является успешным для № 1.

db.getCollection('users').find({
    expertise: {
        $all: [
           { industry: "I1", service: "S1", competence: "C1", qualified: true },
           { industry: "I1", service: "S1", competence: "C2" }
        ]
    }
});

Но для успеха № 2 мне нужно запросить что-то вроде следующего.

db.getCollection('users').find({
    expertise: {
        $all: [
           { industry: "I1", service: "S1", competence: "C1", qualified: {$or: [true, false]} },
           { industry: "I1", service: "S1", competence: "C2" }
        ]
    }
});

Это не работает. Как изменить это к успеху №2. Любая помощь будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...