$expr — это оператор запроса, который позволяет использовать выражения агрегации внутри стандартных фильтров запросов (find, updateOne и т.д.). Это мост между языком запросов и aggregation pipeline.
Без $expr ты не можешь напрямую сравнивать два поля в одном документе в запросе. $expr делает это возможным, принимая синтаксис выражений агрегации:
db.orders.find({
$expr: { $gt: ["$quantity", "$minRequired"] }
})
Это возвращает все документы, где поле quantity превышает поле minRequired — что невозможно достичь только стандартными операторами запроса.
$cond, $switch внутри запросаprice * quantity какой-то порогdb.orders.find({
$expr: {
$gt: [{ $multiply: ["$price", "$quantity"] }, 500]
}
})
$expr может использовать индексы, но только если выражение достаточно простое для оптимизации MongoDBfind, update, delete и в стадии $match агрегационного пайплайнаОператор $expr позволяет использовать выражения агрегации внутри стандартных фильтров запросов, таких как find() и updateOne(), что делает возможным сравнение поля с полем, которое невозможно выполнить с обычными операторами запроса.
Новый — ещё не проверен сообществом
Вы