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 projectionobjeto 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