基本上,我有一个数据库,我记录摩托车和他们的里程。
{
"motorcycle":"A",
"current_km":4600,
"review_km":5000
},
{
"motorcycle":"B",
"current_km":4000,
"review_km":5000
},
{
"motorcycle":"C",
"current_km":4900,
"review_km":5000
},
{
"motorcycle":"D",
"current_km":3000,
"review_km":5000
}我有一个名为current_km的字段,它确定您当前的里程数,我还有一个名为review_km的字段,它包括指定应该在其中进行检查的里程数,只要您当前的里程数(current_km)大于里程审查(review_km)的10%。
因此,我想列举以下几个要素:
current_km大于:
(review_km -( review_km * 0.10))
例如:
current_km = 4600;
review_km = 5000;
result = 5000 - (5000 * 0.10);
4600 (current_km)> = 4500 (result) // in this case it is showed在我的数据库中,它将显示摩托车A和C的结果
我该怎么做呢?我不知道在mongodb中是否可以直接这样做。
发布于 2020-07-30 06:06:16
需要在$subtract和$multiply中使用聚合,
$addFields添加新字段,我们将生成result字段,使用$subtract生成方程(review_km - ( review_km * 0.10)),并在$expr中生成$multiply$match方程,如果current_km >= result正确,则返回文档db.collection.aggregate([
{
$addFields: {
result: {
$subtract: [
"$review_km",
{
$multiply: [
"$review_km",
0.10
]
}
]
}
}
},
{
$match: {
$expr: {
$gte: [
"$current_km",
"$result"
]
}
}
}
])工作游乐场:https://mongoplayground.net/p/s2qenvuzLKF
较短版本
如果您不希望响应
result字段,则不再需要$match和$addFields中的组合条件
db.collection.aggregate([
{
$match: {
$expr: {
$gte: [
"$current_km",
{
$subtract: [
"$review_km",
{
$multiply: [
"$review_km",
0.10
]
}
]
}
]
}
}
}
])https://stackoverflow.com/questions/63166913
复制相似问题