No MongoDB, o
$divide
operador de pipeline de agregação divide um número por outro e retorna o resultado. Para usar
$divide
, passe os números em uma matriz. O $divide
operador irá dividir o primeiro número pelo segundo número. Em outras palavras, o primeiro número é o dividendo e o segundo número é o divisor. Os argumentos podem ser qualquer expressão válida, desde que resolvam para números.
Exemplo
Suponha que tenhamos uma coleção chamada
data
com o seguinte documento:{ "_id" : 1, "a" : 1000, "b" : 2 }
Podemos usar o
$divide
operador dentro de um pipeline de agregação para dividir um desses números pelo outro. db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $divide: [ "$a", "$b" ] } }
}
]
)
Resultado:
{ "a" : 1000, "b" : 2, "result" : 500 }
Se quisermos dividir
b
campo pelo a
campo, precisaríamos trocá-los. Exemplo:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $divide: [ "$b", "$a" ] } }
}
]
)
Resultado:
{ "a" : 1000, "b" : 2, "result" : 0.002 }
Números negativos
Suponha que adicionamos o seguinte documento à nossa coleção:
{ "_id" : 2, "a" : 1000, "b" : -2 }
Isso inclui um número negativo. Mas isso não é um problema, porque um número negativo ainda é um número, e certamente podemos dividir qualquer número por um número negativo.
Exemplo:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $divide: [ "$a", "$b" ] } }
}
]
)
Resultado:
{ "a" : 1000, "b" : 2, "result" : 500 } { "a" : 1000, "b" : -2, "result" : -500 }
Aqui é trocado, de modo que dividimos um número negativo por um número positivo:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $divide: [ "$b", "$a" ] } }
}
]
)
Resultado:
{ "a" : 1000, "b" : 2, "result" : 0.002 } { "a" : 1000, "b" : -2, "result" : -0.002 }
Adicione seu próprio número
Você não está necessariamente restrito apenas aos números no(s) documento(s). Você pode usar seus próprios números se precisar dividir um campo por um valor fixo.
Exemplo:
db.data.aggregate(
[
{ $project: {
_id: 0,
result: { $multiply: [ "$a", 5 ] } }
}
]
)
Resultado:
{ "result" : 5000 } { "result" : 5000 }