Node.js MongoDB Trova


In MongoDB utilizziamo i metodi find e findOne per trovare i dati in una raccolta.

Proprio come l' istruzione SELECT viene utilizzata per trovare i dati in una tabella in un database MySQL.

Trova uno

Per selezionare i dati da una raccolta in MongoDB, possiamo utilizzare il findOne()metodo.

Il findOne()metodo restituisce la prima occorrenza nella selezione.

Il primo parametro del findOne()metodo è un oggetto query. In questo esempio utilizziamo un oggetto query vuoto, che seleziona tutti i documenti in una raccolta (ma restituisce solo il primo documento).

Esempio

Trova il primo documento nella collezione clienti:

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();
  });
});

Salva il codice sopra in un file chiamato "demo_mongodb_findone.js" ed esegui il file:

Esegui "demo_mongodb_findone.js"

C:\Users\Your Name>node demo_mongodb_findone.js

Che ti darà questo risultato:

Company Inc.


Trova tutto

Per selezionare i dati da una tabella in MongoDB, possiamo anche usare il find()metodo.

Il find()metodo restituisce tutte le occorrenze nella selezione.

Il primo parametro del find()metodo è un oggetto query. In questo esempio utilizziamo un oggetto query vuoto, che seleziona tutti i documenti nella raccolta.

Nessun parametro nel metodo find() ti dà lo stesso risultato di SELECT * in MySQL.

Esempio

Trova tutti i documenti nella collezione clienti:

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();
  });
});

Salva il codice sopra in un file chiamato "demo_mongodb_find.js" ed esegui il file:

Esegui "demo_mongodb_find.js"

C:\Users\Your Name>node demo_mongodb_find.js

Che ti darà questo risultato:

[
  { _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'}
]

Trova qualche

Il secondo parametro del find()metodo è l' projectionoggetto che descrive quali campi includere nel risultato.

Questo parametro è facoltativo e, se omesso, tutti i campi verranno inclusi nel risultato.

Esempio

Restituisci i campi "nome" e "indirizzo" di tutti i documenti della collezione clienti:

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();
  });
});

Salva il codice sopra in un file chiamato "demo_mongodb_find_fields.js" ed esegui il file:

Esegui "demo_mongodb_find_fields.js"

C:\Users\Your Name>node demo_mongodb_find_fields.js

Che ti darà questo risultato:

[
  { 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'}
]

Non è consentito specificare entrambi i valori 0 e 1 nello stesso oggetto (tranne se uno dei campi è il campo _id). Se specifichi un campo con valore 0, tutti gli altri campi ottengono il valore 1 e viceversa:

Esempio

Questo esempio escluderà "indirizzo" dal risultato:

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();
  });
});

Per escludere il campo _id, devi impostarne il valore su 0:

Esempio

Questo esempio restituirà solo il campo "nome":

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();
  });
});

Esempio

Questo esempio ti darà lo stesso risultato del primo esempio; restituisce tutti i campi tranne il 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();
  });
});

Esempio

Viene visualizzato un errore se si specificano entrambi i valori 0 e 1 nello stesso oggetto (tranne se uno dei campi è il 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();
  });
});

L'oggetto risultato

Come puoi vedere dal risultato dell'esempio sopra, il risultato può essere convertito in un array contenente ogni documento come oggetto.

Per restituire ad esempio l'indirizzo del terzo documento, basta fare riferimento alla proprietà address del terzo oggetto array:

Esempio

Restituire l'indirizzo del terzo documento:

console.log(result[2].address);

Che produrrà questo risultato:

Apple st 652