В MongoDB, как вы получаете набор результатов, где поле X больше, чем поле Y на значение N?

Я пытаюсь запросить мою локальную MongoDB для документов, где поле X больше, чем поле Y на значение N (в этом случае значение N = 0,25).

У меня сейчас есть:

db.getCollection('collection1').find({ $expr: { $gt: [ "$field1" , "$field2" ] }}).sort({"dateAdded" : -1})

Но это только возвращает результаты, где field1 больше чем field2. Мне нужно, чтобы field1 было больше, чем field2 на 0.25.

Я не могу найти это нигде в документации, я уверен, что упускаю что-то легкое...

Спасибо за вашу помощь.

1 ответ

Создайте выражение, которое сначала вычисляет разницу, а затем вы можете сделать больше, чем сравнение.

Возьмем, к примеру, этот запрос, который использует $subtract Оператор, чтобы получить разницу:

db.getCollection('collection1').find(
    { "$expr": { 
        "$gt": [ 
            { "$subtract": ["$field1", "$field2"] },
            0.25
        ] 
    }}
).sort({"dateAdded" : -1})
Другие вопросы по тегам