$ и оператор возвращает неверный результат в mongodb - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь найти один продукт, идентификатор которого соответствует данному идентификатору, а также хочу узнать, будет ли его количество все еще больше или равно проданному количеству (после добавления проданного количества, которое будет продано позже в процессе).

const product = await Product.findOne(
    {
        $expr: {
            $and: [
                { _id: id },
                { $gte: ["$quantity", { $sum: ["$soldQuantity", quantity] }] }
            ]
        }
    }
);

(здесь количество - это константа, значение которой равно 2 и id - это ObjectId ), что я До сих пор достигнуто, если я превращаю $ gte в $ lte , я получаю правильный результат , но $ gte возвращает мне ложный результат , который должен вместо этого верните пустой объект , если условия не выполнялись. Я использую mongoDB версия 4.2

Схема имеет:

Schema({
     quantity: {
         type: Number,
         required: true
     },
     soldQuantity: {
         type: Number,
         default: 0
    }
})
...