Node.js MongoDB Zoeken


In MongoDB gebruiken we de methoden find en findOne om gegevens in een verzameling te vinden.

Net zoals de SELECT -instructie wordt gebruikt om gegevens in een tabel in een MySQL-database te vinden.

Vind een

Om gegevens uit een verzameling in MongoDB te selecteren, kunnen we de findOne()methode gebruiken.

De findOne()methode retourneert de eerste instantie in de selectie.

De eerste parameter van de findOne()methode is een query-object. In dit voorbeeld gebruiken we een leeg query-object, dat alle documenten in een verzameling selecteert (maar alleen het eerste document retourneert).

Voorbeeld

Vind het eerste document in de klantencollectie:

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

Sla de bovenstaande code op in een bestand met de naam "demo_mongodb_findone.js" en voer het bestand uit:

Voer "demo_mongodb_findone.js" uit

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

Wat je dit resultaat geeft:

Company Inc.


Vind alle

Om gegevens uit een tabel in MongoDB te selecteren, kunnen we ook de find()methode gebruiken.

De find()methode retourneert alle exemplaren in de selectie.

De eerste parameter van de find()methode is een query-object. In dit voorbeeld gebruiken we een leeg query-object, dat alle documenten in de collectie selecteert.

Geen enkele parameter in de methode find() geeft hetzelfde resultaat als SELECT * in MySQL.

Voorbeeld

Vind alle documenten in de klantencollectie:

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

Sla de bovenstaande code op in een bestand met de naam "demo_mongodb_find.js" en voer het bestand uit:

Voer "demo_mongodb_find.js" uit

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

Wat je dit resultaat geeft:

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

Vind wat

De tweede parameter van de find()methode is het projectionobject dat beschrijft welke velden in het resultaat moeten worden opgenomen.

Deze parameter is optioneel en als deze wordt weggelaten, worden alle velden in het resultaat opgenomen.

Voorbeeld

Retourneer de velden "naam" en "adres" van alle documenten in de klantenverzameling:

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

Sla de bovenstaande code op in een bestand met de naam "demo_mongodb_find_fields.js" en voer het bestand uit:

Voer "demo_mongodb_find_fields.js" uit

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

Wat je dit resultaat geeft:

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

Het is niet toegestaan ​​om zowel 0 als 1 waarden in hetzelfde object op te geven (behalve als een van de velden het _id veld is). Als u een veld specificeert met de waarde 0, krijgen alle andere velden de waarde 1, en vice versa:

Voorbeeld

In dit voorbeeld wordt "adres" uitgesloten van het resultaat:

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

Om het veld _id uit te sluiten, moet u de waarde op 0 zetten:

Voorbeeld

In dit voorbeeld wordt alleen het veld "naam" geretourneerd:

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

Voorbeeld

Dit voorbeeld geeft hetzelfde resultaat als het eerste voorbeeld; retourneer alle velden behalve het veld _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();
  });
});

Voorbeeld

U krijgt een foutmelding als u zowel 0- als 1-waarden opgeeft in hetzelfde object (behalve als een van de velden het veld _id is):

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

Het resultaatobject

Zoals u kunt zien aan het resultaat van het bovenstaande voorbeeld, kan het resultaat worden geconverteerd naar een array die elk document als een object bevat.

Om bijvoorbeeld het adres van het derde document te retourneren, raadpleegt u de adreseigenschap van het derde array-object:

Voorbeeld

Retourneer het adres van het derde document:

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

Wat dit resultaat oplevert:

Apple st 652