Mongo $expr return 当 2 个字段的增量超过 20% 时
Mongo $expr return when delta of 2 fields exceeds 20%
这将 return 文档,其中 field1
大于 field2
collection.find( { $expr: { $gt: [ "$field1" , "$field2" ] } } )
我想获取 field1
和 field2
之间的差异大于或小于 20 的文档。可以做到吗?
像这样。
{
match: {
$expr: {
{
$expr: {
$gt: [
$subtract: ["$field1", "$field2"], 20
]
}
}
}
}
}
不寻找聚合解决方案
是的,您可以使用与您已经在做的类似的查询,您只需检查两种方式 field1 - field2 > 20
或 field2 - field1 > 20
。
您可以使用 $abs
(absolute(field1 - field2) > 20)
轻松实现此目的,如下所示:
db.collection.find({
$expr: {
$gt: [
{
$abs: {
$subtract: [
"$field1",
"$field2"
]
}
},
20
]
}
})
这将 return 文档,其中 field1
大于 field2
collection.find( { $expr: { $gt: [ "$field1" , "$field2" ] } } )
我想获取 field1
和 field2
之间的差异大于或小于 20 的文档。可以做到吗?
像这样。
{
match: {
$expr: {
{
$expr: {
$gt: [
$subtract: ["$field1", "$field2"], 20
]
}
}
}
}
}
不寻找聚合解决方案
是的,您可以使用与您已经在做的类似的查询,您只需检查两种方式 field1 - field2 > 20
或 field2 - field1 > 20
。
您可以使用 $abs
(absolute(field1 - field2) > 20)
轻松实现此目的,如下所示:
db.collection.find({
$expr: {
$gt: [
{
$abs: {
$subtract: [
"$field1",
"$field2"
]
}
},
20
]
}
})