MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quel est l'équivalent de findOne utilisant .aggregate dans Mongodb ?

Prenons un exemple de names collecte :

{ _id: 1, name: "Jack", favoriteColor: "blue" },
{ _id: 2, name: "James", favoriteColor: "red" },
{ _id: 3, name: "John", favoriteColor: "blue" }

et exécutez les trois requêtes suivantes en utilisant findOne :

db.names.findOne( { _id: 1 } )
db.names.findOne()
db.names.findOne( { favoriteColor : "blue" } )

le résultat est le même pour les trois requêtes :

{ "_id" : 1, "name" : "Jack", "favoriteColor" : "blue" }


Les requêtes équivalentes utilisant respectivement l'agrégation sont les suivantes, avec le même résultat :

db.names.aggregate( [
  { $match: { _id: 1 } },
] )

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


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


db.collection.findOne la définition dit -

Avec findOne si aucun document n'est trouvé, il renvoie un null . Mais une agrégation renvoie un curseur, et vous pouvez appliquer les méthodes de curseur sur le résultat.