Exemplo de findOne no MongoDB

O método findOne() do MongoDB retorna apenas um documento que satisfaz os critérios inseridos. Se os critérios inseridos corresponderem a mais de um documento, o método retorna apenas um documento de acordo com a ordem natural, que reflete a ordem em que os documentos são armazenados no banco de dados.

MongoDB findOne

A sintaxe do MongoDB findOne() é: db.collection.findOne(<critérios>, <projeção>) critérios – especifica os critérios de seleção inseridos. projeção – especifica a lista de campos a serem exibidos no documento retornado. Alguns pontos importantes sobre o MongoDB findOne:

  1. O parâmetro de projeção aceita os valores booleanos de 1 ou verdadeiro, 0 ou falso. Se os campos de projeção não forem especificados, todos os campos serão recuperados.
  2. O MongoDB findOne() sempre inclui o campo _id mesmo se não for especificado explicitamente no parâmetro de projeção, a menos que seja excluído.
  3. O MongoDB findOne() retorna apenas um documento, mas não um cursor.

MongoDB findOne – Especificação de Consulta Vazia

Essa operação retorna um único documento da coleção especificada. Por exemplo, db.car.findOne() Saída:

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

Apenas um registro é recuperado da coleção car. Observe que “Polo” foi inserido primeiro no banco de dados.

MongoDB findOne – Especificação de Consulta

Esta operação MongoDB findOne retorna o primeiro documento correspondente da coleção especificada, juntamente com os critérios de seleção inseridos. Por exemplo:

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

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

Esta operação procura pelo carro chamado “Zen” ou com velocidade maior que 60 e recupera o primeiro documento que satisfaz os critérios inseridos da coleção de carros.

Projeção no MongoDB findOne()

O parâmetro de projeção também é aplicável ao método MongoDB findOne. Vamos analisar alguns cenários em que podemos usar projeção no findOne.

Encontrar MongoDB – especificar os campos a serem retornados

Esta operação exibe apenas os campos especificados na consulta. Por exemplo:

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

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

O primeiro documento da coleção Carro com os campos id, nome e cor é exibido.

Encontrar MongoDB – retornar todos os campos exceto o excluído

Esta operação recupera o primeiro documento excluindo os campos especificados nos critérios de seleção. Por exemplo;

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

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

O nome do carro com Volkswagen é recuperado excluindo os campos id, país de fabricação e cno.

Documento de resultado do findOne do MongoDB

Os métodos do cursor não funcionarão nesta operação, pois o método retorna apenas um único documento. Para imprimir os valores individuais dos campos do documento, podemos usar o código abaixo.

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

"Polo"

Isto recupera apenas o nome do carro “Polo”.

Exemplo de findOne do MongoDB em Java

Abaixo está o programa Java mostrando diferentes opções que podemos usar com o findOne() do 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 {

	// o método recupera o primeiro documento sem nenhum critério
	public static void emptyFindOne() throws UnknownHostException {

		// Obtenha uma nova conexão com o banco de dados presumindo que ele esteja em execução
		MongoClient mongoClient = new MongoClient("localhost");

		// use test como banco de dados, use o seu banco de dados aqui
		DB db = mongoClient.getDB("test");

		// obtenha o objeto de coleção, aqui é usado 'car', use o seu próprio
		DBCollection coll = db.getCollection("car");

		// invocando o método findOne()
		DBObject doc = coll.findOne();

		// imprime o documento resultante
		System.out.println(doc);
	}

	// método que recupera o documento com base nos critérios de seleção
	public static void querySpecification() throws UnknownHostException {
		// não é necessário obter uma conexão toda vez (pode ser feito uma vez
		// globally).
		MongoClient mongoClient = new MongoClient("localhost");
		DB db = mongoClient.getDB("test");
		DBCollection coll = db.getCollection("car");

		// consulta para filtrar o documento com base nos valores de nome e velocidade
		// criando um novo objeto
		DBObject query = new BasicDBObject("name", "Zen").append("speed",
				new BasicDBObject("$gt", 30));

		// documento resultante obtido ao satisfazer os critérios
		DBObject d1 = coll.findOne(query);

		// imprime o documento no 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");

		// cria um novo objeto de banco de dados
		BasicDBObject b1 = new BasicDBObject();

		// critérios para exibir apenas os campos de nome e cor no resultado
		// document
		BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);

		// método que recupera os documentos aceitando campos e objeto
		// 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");

		// critério de filtro para o nome do carro 'volkswagen'
		DBObject query = new BasicDBObject("name", "Volkswagen");

		// excluindo os campos 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();
		
		// imprime apenas o nome do carro
		System.out.println((d1.get("name")));
	}
	
	public static void main(String[] args) throws UnknownHostException {
		// invocando todos os métodos a partir do main
		emptyFindOne();
		querySpecification();
		projectionFields();
		excludeByfields();
		printDoc();
	}

}

Saída do programa acima é:

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

Isso é tudo para o método findOne() do MongoDB, vamos explorar mais opções do MongoDB em postagens futuras. Referência: Documento Oficial

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