Il metodo MongoDB findOne() restituisce solo un documento che soddisfa i criteri inseriti. Se i criteri inseriti corrispondono a più di un documento, il metodo restituisce solo un documento secondo l’ordinamento naturale, che riflette l’ordine in cui i documenti sono memorizzati nel database.
MongoDB findOne
La sintassi di MongoDB findOne() è:
db.collection.findOne(<criteri>, <proiezione>)
criteri – specifica i criteri di selezione inseriti. proiezione – specifica l’elenco dei campi da visualizzare nel documento restituito. Alcuni punti importanti su MongoDB findOne:
- Il parametro di proiezione accetta i valori booleani di 1 o vero , 0 o falso. Se i campi di proiezione non sono specificati, verranno recuperati tutti i campi.
- MongoDB findOne() include sempre il campo _id anche se non specificato esplicitamente nel parametro di proiezione a meno che non sia escluso.
- MongoDB findOne() restituisce solo un documento ma non un cursore.
MongoDB findOne – Specifica di query vuota
Questa operazione restituisce un singolo documento dalla raccolta specificata. Ad esempio, db.car.findOne ()
Output:
{
"_id" : 2,
"name" : "Polo", "color" : "White",
"cno" : "H411", "speed" : 45, "mfdcountry" : "Japan"
}
Viene recuperato solo un record dalla raccolta car
. Si noti che “Polo” è stato inserito per primo nel database.
MongoDB findOne – Specifica di query
Questa operazione findOne di MongoDB restituisce il primo documento corrispondente dalla raccolta specificata insieme ai criteri di selezione inseriti. Ad esempio:
>db.car.findOne(
... {
... $or:[
... {name:"Zen"},
... {speed: {$gt:60}} ... ]
... }
... )
{
"_id" : ObjectId("546cb92393f464ed49d620db"),
"name" : "Zen",
"color" : "JetRed",
"cno" : "H671",
"speed" : 67,
"mfdcountry" : "Rome"
}
Questa operazione cerca l’auto chiamata “Zen” o con una velocità maggiore di 60 e recupera il primo documento che soddisfa i criteri inseriti dalla raccolta delle auto.
Proiezione in MongoDB findOne ()
Il parametro di proiezione è anche applicabile al metodo MongoDB findOne. Esaminiamo alcuni scenari in cui possiamo utilizzare la proiezione in findOne.
MongoDB findOne – specificare i campi da restituire
Questa operazione visualizza solo i campi specificati nella query. Ad esempio:
>db.car.findOne(
... { },
... {name:1,color:1}
... )
{ "_id" : 2, "name" : "Polo", "color" : "White" }
Viene visualizzato il primo documento della collezione Car con i campi id, name e color.
MongoDB findOne – restituire tutti i campi tranne quelli esclusi
Questa operazione recupera il primo documento escludendo i campi specificati nei criteri di selezione. Ad esempio;
>db.car.findOne(
... { name:"Volkswagen" },
... {_id:0, mfdcountry:0,cno:0 }
... )
{ "name" : "Volkswagen", "color" : "JetBlue", "speed" : 62 }
Viene recuperato il nome dell’auto con Volkswagen escludendo i campi id, mfdcountry e cno.
Risultato del documento MongoDB findOne
I metodi del cursore non funzioneranno in questa operazione in quanto il metodo restituisce solo un singolo documento. Per stampare i valori dei singoli campi dal documento, possiamo utilizzare il codice seguente.
>var car = db.car.findOne();
> if (car) {
... var carName = car.name;
... print (tojson(carName));
... }
"Polo"
Questo recupera solo il nome dell’auto “Polo”.
Esempio Java di findOne di MongoDB
Di seguito il programma Java che mostra le diverse opzioni che possiamo utilizzare con findOne() di MongoDB. 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 {
// Il metodo recupera il primo documento senza alcun criterio
public static void emptyFindOne() throws UnknownHostException {
// Ottieni una nuova connessione al database presumendo che sia in esecuzione
MongoClient mongoClient = new MongoClient("localhost");
// Usa test come database, usa il tuo database qui
DB db = mongoClient.getDB("test");
// Recupera l'oggetto della collezione, qui viene utilizzata 'car', usa il tuo
DBCollection coll = db.getCollection("car");
// Invoca il metodo findOne()
DBObject doc = coll.findOne();
// Stampa il documento risultante
System.out.println(doc);
}
// Metodo che recupera il documento in base ai criteri di selezione
public static void querySpecification() throws UnknownHostException {
// Non è necessario ottenere una connessione ogni volta (potrebbe essere fatto una volta)
// globally).
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// Query per filtrare il documento in base ai valori di nome e velocità tramite
// la creazione di un nuovo oggetto
DBObject query = new BasicDBObject("name", "Zen").append("speed",
new BasicDBObject("$gt", 30));
// Documento risultante recuperato soddisfacendo i criteri
DBObject d1 = coll.findOne(query);
// Stampa il documento su 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");
// Crea un nuovo oggetto db
BasicDBObject b1 = new BasicDBObject();
// Criteri per visualizzare solo i campi nome e colore nel risultato
// document
BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);
// Metodo che recupera i documenti accettando campi e oggetto come criteri di filtro
// 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");
// Criteri di filtro per il nome dell'auto 'volkswagen'
DBObject query = new BasicDBObject("name", "Volkswagen");
// Escludendo i campi mfdcountry, cno e id
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();
// Stampa solo il nome dell'auto
System.out.println((d1.get("name")));
}
public static void main(String[] args) throws UnknownHostException {
// Invocazione di tutti i metodi dal main
emptyFindOne();
querySpecification();
projectionFields();
excludeByfields();
printDoc();
}
}
L’output del programma sopra è:
{ "_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
Questo è tutto per il metodo findOne() di MongoDB, esamineremo altre opzioni di MongoDB nei prossimi post. Riferimento: Documento ufficiale
Source:
https://www.digitalocean.com/community/tutorials/mongodb-findone-example