Exemple de findOne MongoDB

MongoDB findOne() méthode renvoie seulement un document qui satisfait les critères saisis. Si les critères saisis correspondent à plus d’un document, la méthode renvoie uniquement un document selon l’ordre naturel, qui reflète l’ordre dans lequel les documents sont stockés dans la base de données.

MongoDB findOne

La syntaxe de MongoDB findOne() est : db.collection.findOne(<criteria>, <projection>) criteria – spécifie les critères de sélection saisis. projection – spécifie la liste des champs à afficher dans le document retourné. Quelques points importants à propos de MongoDB findOne:

  1. Le paramètre de projection accepte les valeurs booléennes 1 ou true , 0 ou false. Si les champs de projection ne sont pas spécifiés, tous les champs seront récupérés.
  2. MongoDB findOne() inclut toujours le champ _id même s’il n’est pas spécifié explicitement dans le paramètre de projection, sauf s’il est exclu.
  3. MongoDB findOne() renvoie seulement un document, mais pas un curseur.

findOne de MongoDB – Spécification de requête vide

Cette opération renvoie un seul document de la collection spécifiée. Par exemple, db.car.findOne() Sortie :

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

Un seul enregistrement est récupéré de la collection car. Notez que « Polo » a été inséré en premier dans la base de données.

findOne de MongoDB – Spécification de requête

Cette opération findOne de MongoDB renvoie le premier document correspondant de la collection spécifiée ainsi que les critères de sélection saisis. Par exemple :

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

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

Cette opération recherche la voiture nommée « Zen » ou une vitesse supérieure à 60 et récupère le premier document satisfaisant les critères saisis de la collection de voitures.

Projection dans findOne de MongoDB

Le paramètre de projection est également applicable à la méthode findOne de MongoDB. Examinons quelques scénarios où nous pouvons utiliser la projection dans findOne.

findOne MongoDB – spécifier les champs à retourner

Cette opération affiche uniquement les champs spécifiés dans la requête. Par exemple :

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

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

Le premier document de la collection Car avec les champs id, name et color est affiché.

findOne MongoDB – retourner tous les champs sauf celui exclu

Cette opération récupère le premier document en excluant les champs spécifiés dans les critères de sélection. Par exemple :

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

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

Le nom de la voiture avec Volkswagen est récupéré en excluant les champs id, mfdcountry et cno.

Résultat du document findOne MongoDB

Les méthodes du curseur ne fonctionneront pas dans cette opération car la méthode ne retourne qu’un seul document. Pour imprimer les valeurs des champs individuels du document, nous pouvons utiliser le code ci-dessous.

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

"Polo"

Ceci récupère uniquement le nom de la voiture « Polo ».

Exemple MongoDB findOne en Java

Voici le programme Java montrant différentes options que nous pouvons utiliser avec 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 {

	// La méthode récupère le premier document sans aucun critère
	public static void emptyFindOne() throws UnknownHostException {

		// Obtenez une nouvelle connexion à la base de données en supposant qu'elle soit en cours d'exécution
		MongoClient mongoClient = new MongoClient("localhost");

		// Utilisez "test" comme base de données, utilisez votre base de données ici
		DB db = mongoClient.getDB("test");

		// Récupère l'objet collection, "car" est utilisé ici, utilisez le vôtre
		DBCollection coll = db.getCollection("car");

		// Invocation de la méthode findOne()
		DBObject doc = coll.findOne();

		// Imprime le document résultant
		System.out.println(doc);
	}

	// Méthode qui récupère le document en fonction des critères de sélection
	public static void querySpecification() throws UnknownHostException {
		// Obtenir une connexion à chaque fois n'est pas nécessaire (peut être fait une fois)
		// globally).
		MongoClient mongoClient = new MongoClient("localhost");
		DB db = mongoClient.getDB("test");
		DBCollection coll = db.getCollection("car");

		// Requête pour filtrer le document en fonction des valeurs de nom et de vitesse en créant un nouvel objet
		// Document résultant récupéré en satisfaisant les critères
		DBObject query = new BasicDBObject("name", "Zen").append("speed",
				new BasicDBObject("$gt", 30));

		// Imprime le document sur la console
		DBObject d1 = coll.findOne(query);

		// Crée un nouvel objet de base de données
		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");

		// Critères pour n'afficher que les champs de nom et de couleur dans le résultat
		BasicDBObject b1 = new BasicDBObject();

		// Méthode qui récupère les documents en acceptant les champs et l'objet en critère
		// document
		BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);

		// Critères de filtre pour le nom de la voiture "volkswagen"
		// 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");

		// Excluant les champs "mfdcountry", "cno" et "id"
		DBObject query = new BasicDBObject("name", "Volkswagen");

		// Imprime uniquement le nom de la voiture
		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();
		
		// Invocation de toutes les méthodes depuis le main

		System.out.println((d1.get("name")));
	}
	
	public static void main(String[] args) throws UnknownHostException {
		
		emptyFindOne();
		querySpecification();
		projectionFields();
		excludeByfields();
		printDoc();
	}

}

La sortie du programme ci-dessus est :

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

C’est tout pour la méthode findOne() de MongoDB, nous examinerons plus d’options MongoDB dans les prochains articles. Référence : Documentation officielle

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