Node.js MongoDB Buscar
En MongoDB usamos los métodos find y findOne para encontrar datos en una colección.
Al igual que la declaración SELECT se usa para buscar datos en una tabla en una base de datos MySQL.
Encuentra uno
Para seleccionar datos de una colección en MongoDB, podemos usar el
findOne()
método.
El findOne()
método devuelve la primera aparición en la selección.
El primer parámetro del findOne()
método es un objeto de consulta. En este ejemplo, usamos un objeto de consulta vacío, que selecciona todos los documentos de una colección (pero devuelve solo el primer documento).
Ejemplo
Encuentre el primer documento en la colección de clientes:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").findOne({}, function(err, result) {
if (err) throw err;
console.log(result.name);
db.close();
});
});
Guarde el código anterior en un archivo llamado "demo_mongodb_findone.js" y ejecute el archivo:
Ejecute "demo_mongodb_findone.js"
C:\Users\Your Name>node demo_mongodb_findone.js
Lo que te dará este resultado:
Company Inc.
Encuentra todos
Para seleccionar datos de una tabla en MongoDB, también podemos usar el
find()
método.
El find()
método devuelve todas las ocurrencias en la selección.
El primer parámetro del find()
método es un objeto de consulta. En este ejemplo, usamos un objeto de consulta vacío, que selecciona todos los documentos de la colección.
Ningún parámetro en el método find() le da el mismo resultado que SELECT * en MySQL.
Ejemplo
Encuentre todos los documentos en la colección de clientes:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Guarde el código anterior en un archivo llamado "demo_mongodb_find.js" y ejecute el archivo:
Ejecute "demo_mongodb_find.js"
C:\Users\Your Name>node demo_mongodb_find.js
Lo que te dará este resultado:
[
{ _id:
58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'},
{ _id:
58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'},
{
_id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy',
address: 'Apple st 652'},
{ _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address:
'Mountain 21'},
{ _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'},
{ _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'},
{
_id: 58fdbf5c0ef8a50b4cdd9a8a ,
name: 'Betty', address: 'Green Grass 1'},
{ _id:
58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard',
address: 'Sky st 331'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way
98'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'},
{
_id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William',
address: 'Central st 954'},
{ _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address:
'Main Road 989'},
{ _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway
1633'}
]
Encuentra algo
El segundo parámetro del find()
método es el projection
objeto que describe qué campos incluir en el resultado.
Este parámetro es opcional y, si se omite, todos los campos se incluirán en el resultado.
Ejemplo
Devuelva los campos "nombre" y "dirección" de todos los documentos en la colección de clientes:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address:
1 } }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Guarde el código anterior en un archivo llamado "demo_mongodb_find_fields.js" y ejecute el archivo:
Ejecute "demo_mongodb_find_fields.js"
C:\Users\Your Name>node demo_mongodb_find_fields.js
Lo que te dará este resultado:
[
{ name: 'John', address: 'Highway 71'},
{ name: 'Peter', address: 'Lowstreet 4'},
{
name: 'Amy',
address: 'Apple st 652'},
{ name: 'Hannah', address:
'Mountain 21'},
{ name: 'Michael', address: 'Valley 345'},
{ name: 'Sandy', address: 'Ocean blvd 2'},
{
name: 'Betty', address: 'Green Grass 1'},
{ name: 'Richard',
address: 'Sky st 331'},
{ name: 'Susan', address: 'One way
98'},
{ name: 'Vicky', address: 'Yellow Garden 2'},
{ name: 'Ben', address: 'Park Lane 38'},
{
name: 'William',
address: 'Central st 954'},
{ name: 'Chuck', address:
'Main Road 989'},
{ name: 'Viola', address: 'Sideway
1633'}
]
No puede especificar valores 0 y 1 en el mismo objeto (excepto si uno de los campos es el campo _id). Si especifica un campo con el valor 0, todos los demás campos obtienen el valor 1 y viceversa:
Ejemplo
Este ejemplo excluirá "dirección" del resultado:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { address: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Para excluir el campo _id, debe establecer su valor en 0:
Ejemplo
Este ejemplo devolverá solo el campo "nombre":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0, name: 1
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Ejemplo
Este ejemplo le dará el mismo resultado que el primer ejemplo; devolver todos los campos excepto el campo _id:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Ejemplo
Obtiene un error si especifica los valores 0 y 1 en el mismo objeto (excepto si uno de los campos es el campo _id):
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { name: 1, address: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
El objeto de resultado
Como puede ver en el resultado del ejemplo anterior, el resultado se puede convertir en una matriz que contiene cada documento como un objeto.
Para devolver, por ejemplo, la dirección del tercer documento, simplemente consulte la propiedad de dirección del tercer objeto de matriz:
Ejemplo
Devolver la dirección del tercer documento:
console.log(result[2].address);
Lo que producirá este resultado:
Apple st 652