MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é o equivalente de findOne usando .aggregate no Mongodb?


Considere um exemplo de names coleção:
{ _id: 1, name: "Jack", favoriteColor: "blue" },
{ _id: 2, name: "James", favoriteColor: "red" },
{ _id: 3, name: "John", favoriteColor: "blue" }

e execute as três consultas a seguir usando findOne :
db.names.findOne( { _id: 1 } )
db.names.findOne()
db.names.findOne( { favoriteColor : "blue" } )

o resultado é o mesmo para as três consultas:
{ "_id" : 1, "name" : "Jack", "favoriteColor" : "blue" }


As consultas equivalentes, respectivamente, usando agregação são os seguintes, com o mesmo resultado:
db.names.aggregate( [
  { $match: { _id: 1 } },
] )

db.names.aggregate( [
  { $limit: 1 }
] )


db.names.aggregate( [
  { $match: { "favoriteColor" : "blue" } },
  { $limit: 1 }
] )




db.collection.findOne definição diz -

Com findOne se nenhum documento for encontrado, ele retornará um null . Mas uma agregação retorna um cursor e você pode aplicar os métodos de cursor no resultado.