MongoDB findOne Beispiel
Die MongoDB findOne()-Methode gibt nur ein Dokument zurück, das den eingegebenen Kriterien entspricht. Wenn die eingegebenen Kriterien auf mehr als ein Dokument zutreffen, gibt die Methode nur ein Dokument gemäß der natürlichen Reihenfolge zurück, die die Reihenfolge widerspiegelt, in der die Dokumente in der Datenbank gespeichert sind.
Syntax von MongoDB findOne
Die Syntax von MongoDB findOne() lautet: db.collection.findOne(<criteria>, <projection>) criteria – gibt die eingegebenen Auswahlkriterien an. projection – legt die Liste der Felder fest, die im zurückgegebenen Dokument angezeigt werden sollen. Einige wichtige Punkte über MongoDB findOne:
- Der Projektionsparameter akzeptiert die booleschen Werte 1 oder true, 0 oder false. Werden die Projektionsfelder nicht angegeben, werden alle Felder abgerufen.
- MongoDB findOne() enthält immer das Feld _id, auch wenn es nicht explizit im Projektionsparameter angegeben ist, es sei denn, es wird ausgeschlossen.
- MongoDB findOne() gibt nur ein Dokument zurück, aber keinen Cursor.
MongoDB findOne – Leere Abfragespezifikation
Diese Operation gibt ein einzelnes Dokument aus der angegebenen Sammlung zurück. Zum Beispiel, db.car.findOne() Output:
{
"_id" : 2,
"name" : "Polo", "color" : "White",
"cno" : "H411", "speed" : 45, "mfdcountry" : "Japan"
}
Es wird nur ein Datensatz aus der Autosammlung abgerufen. Beachten Sie, dass „Polo“ zuerst in die Datenbank eingefügt wurde.
MongoDB findOne – Abfragespezifikation
Diese MongoDB findOne-Operation gibt das erste passende Dokument aus der angegebenen Sammlung zusammen mit den eingegebenen Auswahlkriterien zurück. Zum Beispiel:
>db.car.findOne(
... {
... $or:[
... {name:"Zen"},
... {speed: {$gt:60}} ... ]
... }
... )
{
"_id" : ObjectId("546cb92393f464ed49d620db"),
"name" : "Zen",
"color" : "JetRed",
"cno" : "H671",
"speed" : 67,
"mfdcountry" : "Rome"
}
Diese Operation sucht nach dem Auto mit dem Namen „Zen“ oder nach einer Geschwindigkeit, die größer als 60 ist, und ruft das erste Dokument ab, das die eingegebenen Kriterien aus der Autosammlung erfüllt.
Projektion in MongoDB findOne()
Der Projektionsparameter ist auch für die MongoDB findOne-Methode anwendbar. Lassen Sie uns einige Szenarien betrachten, in denen wir Projektion in findOne verwenden können.
Angegebene Felder zurückgeben
Diese Operation zeigt nur die im Abfrage angegebenen Felder an. Zum Beispiel:
>db.car.findOne(
... { },
... {name:1,color:1}
... )
{ "_id" : 2, "name" : "Polo", "color" : "White" }
Das erste Dokument aus der Autosammlung mit ID, Name und Farbfeldern wird angezeigt.
Alle Felder zurückgeben, außer den ausgeschlossenen
Diese Operation ruft das erste Dokument ab und schließt die in den Auswahlkriterien angegebenen Felder aus. Zum Beispiel:
>db.car.findOne(
... { name:"Volkswagen" },
... {_id:0, mfdcountry:0,cno:0 }
... )
{ "name" : "Volkswagen", "color" : "JetBlue", "speed" : 62 }
Der Autoname mit Volkswagen wird abgerufen, wobei die Felder id, mfdcountry und cno ausgeschlossen werden.
Ergebnisdokument von MongoDB findOne
Cursor-Methoden funktionieren in dieser Operation nicht, da die Methode nur ein einzelnes Dokument zurückgibt. Um die einzelnen Feldwerte aus dem Dokument auszudrucken, können wir den folgenden Code verwenden.
>var car = db.car.findOne();
> if (car) {
... var carName = car.name;
... print (tojson(carName));
... }
Damit wird nur der Name des Autos „Polo“ abgerufen.
MongoDB findOne Java-Beispiel
Unten ist das Java-Programm, das verschiedene Optionen zeigt, die wir mit MongoDB findOne() verwenden können. MongoDBFindOne.java
package com.journaldev.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
public class MongoDBFindOne {
// method retrieves the first document without any criteria
public static void emptyFindOne() throws UnknownHostException {
// Get a new connection to the db assuming that it is running
MongoClient mongoClient = new MongoClient("localhost");
// use test as a datbase,use your database here
DB db = mongoClient.getDB("test");
// fetch the collection object ,car is used here,use your own
DBCollection coll = db.getCollection("car");
// invoking findOne() method
DBObject doc = coll.findOne();
// prints the resultant document
System.out.println(doc);
}
// method that retrieves the document based on the selection criteria
public static void querySpecification() throws UnknownHostException {
// getting a connection everytime is not needed (could be done once
// globally).
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// query to filter the document based on name and speed values by
// creating new object
DBObject query = new BasicDBObject("name", "Zen").append("speed",
new BasicDBObject("$gt", 30));
// resultant document fetched by satisfying the criteria
DBObject d1 = coll.findOne(query);
// prints the document on console
System.out.println(d1);
}
public static void projectionFields() throws UnknownHostException {
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// creates new db object
BasicDBObject b1 = new BasicDBObject();
// criteria to display only name and color fields in the resultant
// document
BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);
// method that retrieves the documents by accepting fields and object
// criteria
DBObject d1 = coll.findOne(b1, fields);
System.out.println(d1);
}
public static void excludeByfields() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
// filter criteria for car name volkswagen
DBObject query = new BasicDBObject("name", "Volkswagen");
// excluding the fields mfdcountry,cno and id fields
BasicDBObject fields = new BasicDBObject("mfdcountry", 0).append("cno",
0).append("_id", 0);
DBObject d1 = col.findOne(query, fields);
System.out.println(d1);
}
public static void printDoc() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
DBObject d1 = col.findOne();
// prints only the name of the car
System.out.println((d1.get("name")));
}
public static void main(String[] args) throws UnknownHostException {
// invoking all the methods from main
emptyFindOne();
querySpecification();
projectionFields();
excludeByfields();
printDoc();
}
}
Output
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White" , "cno" : "H411" , "speed" : 45.0 , "mfdcountry" : "Japan"}
{ "_id" : { "$oid" : "546cb92393f464ed49d620db"} , "name" : "Zen" , "color" : "JetRed" , "cno" : "H671" , "speed" : 67 , "mfdcountry" : "Rome"}
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White"}
{ "name" : "Volkswagen" , "color" : "JetBlue" , "speed" : 62}
Polo
Das ist alles zur MongoDB findOne()-Methode, wir werden uns in kommenden Beiträgen weitere MongoDB-Optionen ansehen.