MongoDB findOne Voorbeeld

MongoDB findOne() methode retourneert slechts één document dat voldoet aan de ingevoerde criteria. Als de ingevoerde criteria overeenkomen met meer dan één document, retourneert de methode slechts één document volgens natuurlijke ordening, wat de volgorde weerspiegelt waarin de documenten in de database zijn opgeslagen.

MongoDB findOne

MongoDB findOne() syntax is: db.collection.findOne(<criteria>, <projection>) criteria – specificeert de ingevoerde selectiecriteria. projection – specificeert de lijst van velden die weergegeven moeten worden in het geretourneerde document. Enkele belangrijke punten over MongoDB findOne:

  1. De projection parameter accepteert de boolean waarden 1 of true, 0 of false. Als de projectievelden niet zijn gespecificeerd, worden alle velden opgehaald.
  2. MongoDB findOne() omvat altijd het _id veld, zelfs als dit niet expliciet is gespecificeerd in de projection parameter, tenzij het uitgesloten is.
  3. MongoDB findOne() retourneert slechts één document, maar geen cursor.

Lege Query-specificatie bij MongoDB findOne

Deze operatie retourneert een enkel document uit de gespecificeerde verzameling. Bijvoorbeeld, db.car.findOne() Uitvoer:

{
"_id" : 2,
"name" : "Polo", "color" : "White",
"cno" : "H411", "speed" : 45, "mfdcountry" : "Japan"
}

Er wordt slechts één record opgehaald uit de car verzameling. Merk op dat “Polo” eerst in de database is ingevoegd.

Query-specificatie bij MongoDB findOne

Deze MongoDB findOne-operatie retourneert het eerste overeenkomende document uit de gespecificeerde verzameling samen met de ingevoerde selectiecriteria. Bijvoorbeeld:

>db.car.findOne(
... {
... $or:[
... {name:"Zen"},
... {speed: {$gt:60}} ... ]
... }
... )

{
"_id" : ObjectId("546cb92393f464ed49d620db"), 
"name" : "Zen",
"color" : "JetRed",
"cno" : "H671",
"speed" : 67, 
"mfdcountry" : "Rome"
}

Deze operatie zoekt naar de auto genaamd “Zen” of naar een snelheid groter dan 60 en haalt het eerste document dat aan de ingevoerde criteria voldoet op uit de autocollectie.

Projectie in MongoDB findOne()

De projectieparameter is ook van toepassing op de MongoDB findOne-methode. Laten we kijken naar enkele scenario’s waarin we projectie kunnen gebruiken in findOne.

MongoDB findOne – specificeer de velden die teruggegeven moeten worden

Deze operatie toont alleen de velden die gespecificeerd zijn in de query. Bijvoorbeeld:

>db.car.findOne(
... { },
... {name:1,color:1}
... )

{ "_id" : 2, "name" : "Polo", "color" : "White" }

Het eerste document uit de Car collectie met id, naam en kleur velden worden weergegeven.

MongoDB findOne – geef alle velden terug behalve degene die uitgesloten zijn

Deze operatie haalt het eerste document op met uitzondering van de velden gespecificeerd in de selectiecriteria. Bijvoorbeeld;

>db.car.findOne(
... { name:"Volkswagen" },
... {_id:0, mfdcountry:0,cno:0 }
... )

{ "name" : "Volkswagen", "color" : "JetBlue", "speed" : 62 }

De autonaam met Volkswagen wordt opgehaald met uitzondering van de id, mfdcountry en cno velden.

MongoDB findOne resultaatdocument

Cursor methoden werken niet bij deze operatie omdat de methode slechts één document retourneert. Om de individuele veldwaarden uit het document af te drukken, kunnen we de onderstaande code gebruiken.

>var car = db.car.findOne(); 
> if (car) {
...  var carName = car.name;
...  print (tojson(carName));
... }

"Polo"

Dit haalt alleen de naam van de auto “Polo” op.

Voorbeeld van MongoDB findOne in Java

Hieronder staat het Java-programma dat verschillende opties laat zien die we kunnen gebruiken met MongoDB findOne(). 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 {

	// Methode haalt het eerste document op zonder enige criteria
	public static void emptyFindOne() throws UnknownHostException {

		// Maak een nieuwe verbinding met de database, ervan uitgaande dat deze draait
		MongoClient mongoClient = new MongoClient("localhost");

		// Gebruik 'test' als een database, gebruik hier je eigen database
		DB db = mongoClient.getDB("test");

		// Haal het collectieobject op, hier wordt 'car' gebruikt, gebruik je eigen
		DBCollection coll = db.getCollection("car");

		// Roep de findOne() methode aan
		DBObject doc = coll.findOne();

		// Print het resulterende document
		System.out.println(doc);
	}

	// Methode die het document ophaalt op basis van de selectiecriteria
	public static void querySpecification() throws UnknownHostException {
		// Het is niet nodig om telkens opnieuw verbinding te maken (kan eenmaal worden gedaan
		// globally).
		MongoClient mongoClient = new MongoClient("localhost");
		DB db = mongoClient.getDB("test");
		DBCollection coll = db.getCollection("car");

		// Query om het document te filteren op naam en snelheidswaarden door
		// een nieuw object te maken
		DBObject query = new BasicDBObject("name", "Zen").append("speed",
				new BasicDBObject("$gt", 30));

		// Resultaatdocument opgehaald door aan de criteria te voldoen
		DBObject d1 = coll.findOne(query);

		// Print het document op de 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");

		// Maakt nieuw db-object aan
		BasicDBObject b1 = new BasicDBObject();

		// Criteria om alleen de naam- en kleurvelden in het resulterende weer te geven
		// document
		BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);

		// Methode die de documenten ophaalt door velden en object te accepteren
		// 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");

		// Filtercriteria voor autonaam volkswagen
		DBObject query = new BasicDBObject("name", "Volkswagen");

		// Uitsluiting van de velden mfdcountry, cno en id-velden
		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();
		
		// Print alleen de naam van de auto
		System.out.println((d1.get("name")));
	}
	
	public static void main(String[] args) throws UnknownHostException {
		// Roep alle methoden aan vanuit de hoofdmethode
		emptyFindOne();
		querySpecification();
		projectionFields();
		excludeByfields();
		printDoc();
	}

}

Output van bovenstaand programma is:

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

Dat is alles voor de MongoDB findOne() methode, we zullen meer MongoDB-opties bekijken in komende berichten. Referentie: Officiële Documentatie

Source:
https://www.digitalocean.com/community/tutorials/mongodb-findone-example