Tutorials  /  JavaScript

MongoDB findOne Beispiel

Ccentron Redaktion · Februar 2024 ·4 Min. Lesezeit ·JavaScript, Tutorial

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.

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

Syntax von MongoDB findOne

Die Syntax von MongoDB findOne() lautet: db.collection.findOne(, ) 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:

  1. Der Projektionsparameter akzeptiert die booleschen Werte 1 oder true, 0 oder false. Werden die Projektionsfelder nicht angegeben, werden alle Felder abgerufen.
  2. MongoDB findOne() enthält immer das Feld _id, auch wenn es nicht explizit im Projektionsparameter angegeben ist, es sei denn, es wird ausgeschlossen.
  3. 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:

Code
{
"_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:

Mongodb
>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:

Mongodb
>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:

Mongodb
>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.

Mongodb
>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

Go
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

Code
{ "_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.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren