MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist das Äquivalent von findOne mit .aggregate in Mongodb?

Betrachten Sie ein Beispiel für names Sammlung:

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

und führen Sie die folgenden drei Abfragen mit findOne aus :

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

das Ergebnis ist für die drei Abfragen gleich:

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


Die äquivalenten Abfragen jeweils mit Aggregation sind die folgenden, mit dem gleichen Ergebnis:

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

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


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


db.collection.findOne Definition sagt -

Mit findOne wenn kein Dokument gefunden wird, wird ein null zurückgegeben . Aber eine Aggregation gibt einen Cursor zurück, und Sie können die Cursor-Methoden auf das Ergebnis.