Многократная проверка условий в $ match в агрегации мангустов - PullRequest
1 голос
/ 10 марта 2019

Могу ли я сделать это так? Это мой запрос.

const result = await transactionDbSchema.aggregate([
{
$unwind: "$transactions"
},
{
$replaceRoot: { newRoot: "$transactions" }
},
{ $match: { from: req.params.address,to: 
req.params.address} }
]);

Мне нужно ввести в БД с именем "от" и "до", и я получу адрес "req.params.адрес "который может быть в" от "или" до "ключ в БД.Я хочу найти все объекты, которые имеют адрес "req.params.address". Я пытаюсь сделать это таким образом, но это дает пустой массив.

1 Ответ

0 голосов
/ 11 марта 2019

Когда вы вводите несколько условий в $match, по умолчанию оно принимается как $and, оно будет пытаться соответствовать всем заданным условиям и возвращать только те документы, для которых выполняются все условия.

НоИсходя из вашего вопроса, похоже, вам нужно найти все документы, адрес которых находится либо в from, либо в поле to.

, для этой цели вы можете использовать $or.

Попробуйте это:

const result = await transactionDbSchema.aggregate([
{
    $unwind: "$transactions"
},
{
    $replaceRoot: { newRoot: "$transactions" }
},
{   
    $match: { 
        $or : [{ from: req.params.address } ,
               { to:req.params.address}]
    }
}
]);

Подробнее о MongoDb $ или операторе здесь .

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