sql >> Databasteknik >  >> NoSQL >> MongoDB

Vad motsvarar findOne med .aggregate i Mongodb?

Tänk på ett exempel på names samling:

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

och kör följande tre frågor med findOne :

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

resultatet är detsamma för de tre frågorna:

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


De motsvarande frågorna använder aggregering är följande, med samma resultat:

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

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


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


db.collection.findOne definition säger -

Med findOne om inget dokument hittas returnerar det en null . Men en aggregation returnerar en markör och du kan använda markörmetoderna a> på resultatet.



  1. MongoDb Aggregation Datamanipulation - Objekt till Arrayer

  2. hur man flyttar data från mysql till redis

  3. Mongo:fråga med nyckel en nivå djup

  4. Hur man gör fulltextsökning i MongoDB