Это пример документа заказа, который у меня есть
//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" }
]
}
Квалифицированный атрибут является логическим и необязательным.
Требуется найти подходящего пользователя для данного заказа (используя опыт).
Вся экспертиза в заказе должна включать в себя с объектом пользователя.
Но,
Для того, чтобы qualified
было true
в expertise
, нужно вернуть Users
с qualified
, это true
Если 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. Любая помощь будет высоко оценена.