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 projection
object 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