Från MongoDB 4.0 kan du använda $toInt
aggregeringspipeline-operator för att konvertera ett värde till ett heltal.
De flesta typer kan konverteras till ett heltal, men det kan inte värdena ObjectId och Date.
När du konverterar en boolean till ett heltal, om boolean är true
, då är heltal 1
. Om boolean är false
, då är heltal 0
.
Numeriska värden som dubbel och decimal trunkeras efter behov.
Exempel
Anta att vi har en samling som heter types
och den innehåller följande dokument:
{ "_id" : ObjectId("601340eac8eb4369cf6ad9db"), "double" : 123.75, "string" : "123", "boolean" : true, "date" : ISODate("2020-12-31T23:30:15.123Z"), "integer" : 123, "long" : NumberLong(123), "decimal" : NumberDecimal("123.75") }
Vi kan använda $toInt
operatorn för att konvertera dessa fält (förutom _id
och date
fält) till ett heltal. Om inmatningen redan är ett heltal, returnerar den helt enkelt heltal.
db.types.aggregate(
[
{
$project:
{
_id: 0,
double: { $toInt: "$double" },
string: { $toInt: "$string" },
boolean: { $toInt: "$boolean" },
integer: { $toInt: "$integer" },
long: { $toInt: "$long" },
decimal: { $toInt: "$decimal" }
}
}
]
).pretty()
Resultat:
{ "double" : 123, "string" : 123, "boolean" : 1, "integer" : 123, "long" : 123, "decimal" : 123 }
Observera att jag exkluderade date
och _id
fält från operationen, eftersom dessa typer inte kan konverteras till ett heltal.
Fel
Om du stöter på fel, försök använda $convert
operator istället för $toInt
. $convert
operatorn låter dig hantera fel utan att påverka hela aggregeringsoperationen.
$toInt
operatorn är motsvarigheten till att använda $convert
operator för att konvertera ett värde till ett heltal.
Här är ett exempel på hur du använder $convert
för att försöka konvertera ett datum till ett heltal (vilket resulterar i ett fel):
db.types.aggregate(
[
{
$project:
{
_id: 0,
result:
{
$convert: {
input: "$date",
to: "int",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultat:
{ "result" : "An error occurred" }
Använder $convert
tillät oss att ange vilket felmeddelande som skulle användas när felet inträffade, och det stoppade inte hela aggregeringsoperationen.
Se MongoDB $convert
för fler exempel.