MongoDBでは、$abs
集計パイプライン演算子は、数値の絶対値を返します。
例
data
というコレクションがあるとします。 次のドキュメントで:
{ "_id" : 1, "a" : 20, "b" : -20 }
$abs
を使用できます a
の絶対値を返す演算子 およびb
フィールド。
db.data.aggregate(
[
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
結果:
{ "a" : 20, "b" : 20 }
絶対値には符号が含まれていないため、b
から負の符号が削除されていることがわかります。 値。
数値の絶対値は、数直線上でのその数値のゼロからの距離であると考えることができます。
ヌル値
ヌル値はnull
を返します $abs
を使用する場合 オペレーター。
コレクションに次のドキュメントを追加するとします。
{ "_id" : 2, "a" : 0, "b" : null }
$abs
を実行してみましょう そのドキュメントに対する演算子:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
結果:
{ "a" : 0, "b" : null }
b
であることがわかります null
に解決されました 。
0
もわかります 0
に解決されます 。
NaN値
引数がNaN
に解決される場合 、$abs
NaN
を返します 。
例:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ 1 * "g" ] }
}
}
]
)
結果:
{ "a" : 0, "b" : NaN }
この場合、数値に文字列を掛けようとした結果、NaN
になりました。 返送されます。
存在しないフィールド
$abs
の場合 存在しないフィールド、null
に対して演算子が適用されます 返されます。
例:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
c: { $abs: [ "$c" ] }
}
}
]
)
結果:
{ "c" : null }
他のオペレーターと組み合わせる
この例では、$abs
を組み合わせています $subtract
を使用 フィールド間の差の大きさを計算するためにa
およびb
:
db.data.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: {
$abs: {
$subtract: [ "$a", "$b" ]
}
}
}
}
]
)
結果:
{ "a" : 20, "b" : -20, "result" : 40 }