Exemplo de findOne do 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 ordenação natural, que reflete a ordem em que os documentos são armazenados no banco de dados.

MongoDB findOne

A sintaxe do findOne() do MongoDB é: 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 findOne do MongoDB:

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

Consulta findOne do MongoDB – Especificação de Consulta Vazia

Esta 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. Note que “Polo” foi inserido primeiro no banco de dados.

Consulta findOne do MongoDB – Especificação de Consulta

Esta operação findOne do MongoDB 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 busca pelo carro chamado “Zen” ou pela velocidade maior que 60 e recupera o primeiro documento que satisfaz os critérios inseridos da coleção de carros.

Projeção no findOne do MongoDB

O parâmetro de projeção também é aplicável para o método findOne do MongoDB. Vamos ver alguns cenários onde podemos usar a projeção no findOne.

Localizar um documento no 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.

Localizar um documento no 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 número do chassi.

Documento de resultado do findOne no 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 do campo no 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 em Java que mostra 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, assumindo que esteja em execução
		MongoClient mongoClient = new MongoClient("localhost");

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

		// obtenha o objeto de coleção, "car" é usado aqui, substitua pelo seu
		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
		// criação de um novo objeto
		DBObject query = new BasicDBObject("name", "Zen").append("speed",
				new BasicDBObject("$gt", 30));

		// documento resultante recuperado 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ção de 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érios 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 principal
		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 analisar mais opções do MongoDB em próximas postagens. Referência: Documento Oficial

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