No MongoDB, o
$floor operador de pipeline de agregação retorna o maior inteiro menor ou igual ao número especificado. $floor aceita qualquer expressão válida que resolva para um número. Exemplo
Suponha que tenhamos uma coleção chamada
test com os seguintes documentos:{ "_id" : 1, "data" : 8.99 }
{ "_id" : 2, "data" : 8.01 }
{ "_id" : 3, "data" : -8.99 }
{ "_id" : 4, "data" : -8.01 }
{ "_id" : 5, "data" : 8 } Podemos usar o
$floor operador para retornar o maior inteiro menor ou igual ao data campo:db.test.aggregate(
[
{ $project: {
data: 1,
floor: { $floor: "$data" }
}
}
]
) Resultado:
{ "_id" : 1, "data" : 8.99, "floor" : 8 }
{ "_id" : 2, "data" : 8.01, "floor" : 8 }
{ "_id" : 3, "data" : -8.99, "floor" : -9 }
{ "_id" : 4, "data" : -8.01, "floor" : -9 }
{ "_id" : 5, "data" : 8, "floor" : 8 } Neste exemplo, os
data campo é o valor original e o floor campo é o piso desse valor. Valores nulos
Valores nulos retornam
null ao usar o $floor operador. Suponha que adicionamos o seguinte documento à nossa coleção:
{ "_id" : 6, "data" : null } Vamos aplicar o
$floor operador contra esse documento:db.test.aggregate(
[
{ $match: { _id: 6 } },
{ $project: {
floor: { $floor: "$data" }
}
}
]
) Resultado:
{ "_id" : 6, "floor" : null } Podemos ver que o resultado é
null . Valores NaN
Se o argumento resolver para
NaN , $floor retorna NaN . Exemplo:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
floor: { $floor: "$data" * 1 }
}
}
]
) Resultado:
{ "_id" : 1, "floor" : NaN } Campos inexistentes
Se o
$floor operador é aplicado em um campo que não existe, null é devolvido. Exemplo:
db.test.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
floor: { $floor: "$name" }
}
}
]
) Resultado:
{ "_id" : 1, "floor" : null }