MongoDB Frågedokument: db.collection.find() med Exempel

⚡ Smart sammanfattning

MongoDB Dokumentfrågeåtgärder hämtar poster från en samling med hjälp av funktionen db.collection.find(). Metoden returnerar alla dokument som standard, accepterar filterkriterier som fältmatchningar och operatorn $gt och formaterar resultat med kommandot forEach(printjson).

  • 🔍 find() Funktion: Metoden db.collection.find() hämtar dokument från en MongoDB samling, returnerar alla dokument när inget filter anges.
  • 🎯 Filterkriterier: Om ett frågeobjekt skickas, till exempel {EmployeeName: “Smith”}, returneras endast de dokument som matchar villkoret.
  • ➕ Fråga Operators: Urvalsoperatorer som $gt, $lt och $in förfinar resultaten, till exempel att hitta anställda med ett id större än 2.
  • 🖨️ Readable Produktion: Chaining forEach(printjson) skriver ut varje returnerat dokument i ett rent JSON-format.
  • 🧾 Utsprång: Ett andra argument till find() väljer vilka fält som ska inkluderas eller exkluderas från resultaten.

Metoden för att hämta eller hämta data från en MongoDB databas utförs med hjälp av MongoDB frågor. När man utför en frågeoperation kan man också använda kriterier eller villkor som kan användas för att hämta specifik data från databasen.

MongoDB tillhandahåller en funktion som kallas db.collection.find() som används för hämtning av handlingar från en MongoDB databas.

Under loppet av detta MongoDB query tutorial kommer du att se hur den här funktionen används på olika sätt för att uppnå syftet med dokumenthämtning.

Vad är db.collection.find() i MongoDB?

Metoden db.collection.find() är det primära sättet att läsa dokument från en MongoDB samling. När du anropar den utan argument returnerar den alla dokument i samlingen. När du skickar ett frågeobjekt returnerar den bara de dokument som matchar de angivna kriterierna, så att du kan hämta exakt de data du behöver.

Metoden returnerar en markör, som är en pekare till resultatmängden snarare än själva dokumenten. Du loopar vanligtvis genom markören för att visa resultaten, ofta med forEach(printjson) för att visa varje dokument i läsbar JSON. Om du bara behöver en enda post, MongoDB erbjuder även findOne(), som returnerar det första matchande dokumentet istället för en markör. Tillsammans täcker find() och findOne() de flesta läsoperationer i en MongoDB databas, från att hämta hela samlingar till filtrering efter specifika fältvärden.

MongoDB Grundläggande fråga Operationer

Det grundläggande MongoDB frågeoperatorer täcker de enkla operationerna som att hämta alla dokument i en MongoDB samling. Låt oss titta på ett db.collection.find exempel på hur vi kan åstadkomma detta.

All vår kod kommer att köras i MongoDB JavaScript kommandoskal. Tänk på att vi har en samling som heter 'Anställd' i vår MongoDB databasen och vi kör kommandot nedan.

MongoDB Grundläggande fråga Operationer
MongoDB Grundläggande frågeoperation

Code Förklaring:

  1. Anställd är samlingsnamnet i MongoDB databas
  2. Ocuco-landskapet MongoDB find query är en inbyggd funktion som används för att hämta dokumenten i samlingen.

Om kommandot utförs framgångsrikt kommer följande utdata att visas för MongoDB hitta exempel

Produktion:

MongoDB Grundläggande fråga Operationer

Utgången visar alla dokument som finns i samlingen.

Vi kan också lägga till kriterier i våra frågor så att vi kan hämta dokument utifrån vissa förutsättningar.

MongoDB Fråga exempel – 1

Låt oss titta på ett par MongoDB fråga exempel på hur vi kan åstadkomma detta.

db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);

Code Förklaring:

  1. Här vill vi hitta för en anställd vars namn är "Smith" i samlingen, därför anger vi filterkriterierna som EmployeeName : "Smith"

Om kommandot utförs framgångsrikt kommer följande utdata att visas

Produktion:

MongoDB Fråga exempel

Utdata visar att endast dokumentet som innehåller "Smith" som anställds namn returneras.

MongoDB Fråga exempel – 2

Nu i detta MongoDB queries tutorial, låt oss ta en titt på ett annat kodexempel som använder sig av större än sökkriterier. När detta kriterium ingår, söker den faktiskt i de dokument där fältets värde är större än det angivna värdet.

db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);

Code Förklaring:

  1. Här vill vi hitta för alla anställda vars id är större än 2. $gt kallas en frågevalsoperator, och det som bara betyder är att använda uttrycket större än.

Om MongoDB select fields-kommandot utförs framgångsrikt, kommer följande utdata att visas

Produktion:

MongoDB Fråga exempel

Alla dokument där anställds ID är större än 2 returneras.

MongoDB Fråga Operatorer

MongoDB filtrerar dokument med hjälp av frågevalsoperatorer inom find()-kriterierna. Dessa operatorer låter dig matcha intervall, listor och negationer istället för bara exakta värden. Tabellen nedan listar de vanligaste operatorerna:

Operator Betydelse Exempelvis
$gt Större än {Anställds-ID: {$gt: 2}}
$lt Less än {Anställds-ID: {$lt: 5}}
$gte Större än eller lika med {ålder: {$gte: 18}}
$lte Less än eller lika med {ålder: {$te: 60}}
$ne Inte lika med {status: {$ne: “aktiv”}}
$in Matchar valfritt värde i en lista {avd: {$in: [“HR”, “IT”]}}

Du kan också kombinera villkor med $and och $or för att skapa mer exakta frågor. Att välja rätt operator gör frågorna effektiva och returnerar endast de dokument som din applikation behöver.

Hur man använder projektion med find()

Som standard returnerar find() hela dokumentet, inklusive alla fält. Ofta behöver du bara ett fåtal fält, till exempel ett namn eller ett id. MongoDB låter dig styra detta med en projektion, vilket är ett andra argument som skickas till find() och som listar de fält som ska inkluderas eller exkluderas.

Om du bara vill inkludera specifika fält, sätt dem till 1 i projektionsobjektet. Följande fråga returnerar endast fältet EmployeeName för varje dokument:

db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);

MongoDB returnerar alltid _id-fältet om du inte uttryckligen exkluderar det. För att dölja det, sätt _id till 0:

db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);

Du kan också exkludera fält istället för att inkludera dem genom att ställa in dem till 0. Till exempel returnerar frågan nedan alla fält utom Employeeid:

db.Employee.find({}, {Employeeid: 0}).forEach(printjson);

Tänk på att du inte kan blanda inkludering och exkludering i samma projektion, förutom för _id-fältet. Att använda projektion minskar mängden data som överförs från servern, vilket gör frågor snabbare och svar lättare att läsa, särskilt i stora dokument.

Vanliga frågor

find() returnerar en markör till alla dokument som matchar frågan, så den kan returnera många resultat. findOne() returnerar endast det första matchande dokumentet som ett enda objekt, eller null om inget matchar.

Kedja sort() och limit() till find()-markören. Till exempel returnerar find().sort({age:1}).limit(5) de fem yngsta posterna. Använd 1 för stigande ordning och -1 för fallande ordning i sort().

Använd countDocuments() med samma filter, till exempel db.Employee.countDocuments({EmployeeName:”Smith”}). Det returnerar antalet matchande dokument utan att hämta dem, vilket är snabbare än att läsa och räkna hela resultatmängden.

AI kan konvertera en begäran i enkelt språk till en find()-fråga med rätt operatorer och projektion, och förklara varje del. Testa alltid frågan på exempeldata innan du kör den i produktion.

Ja. AI kan läsa en frågeplan, upptäcka saknade index eller ineffektiva operatorer och föreslå index eller omskrivna filter. Detta hjälper utvecklare att förbättra find()-prestanda på stora samlingar snabbare.

Sammanfatta detta inlägg med: