Node.js MongoDB- query
Filter het resultaat
Wanneer u documenten in een verzameling zoekt, kunt u het resultaat filteren met behulp van een query-object.
Het eerste argument van de find()
methode is een query-object en wordt gebruikt om de zoekopdracht te beperken.
Voorbeeld
Vind documenten met het adres "Park Lane 38":
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");
var query = { address: "Park Lane 38" };
dbo.collection("customers").find(query).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_query.js" en voer het bestand uit:
Voer "demo_mongodb_query.js" uit
C:\Users\Your Name>node demo_mongodb_query.js
Wat je dit resultaat geeft:
[
{ _id: 58fdbf5c0ef8a50b4cdd9a8e
, name: 'Ben', address: 'Park Lane 38' }
]
Filter met reguliere expressies
U kunt reguliere expressies schrijven om precies te vinden wat u zoekt.
Reguliere expressies kunnen alleen worden gebruikt om strings op te vragen .
Om alleen de documenten te vinden waarvan het veld "adres" begint met de letter "S", gebruikt u de reguliere expressie /^S/
:
Voorbeeld
Zoek documenten waarvan het adres begint met de letter "S":
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");
var query = { address: /^S/ };
dbo.collection("customers").find(query).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_query_s.js" en voer het bestand uit:
Voer "demo_mongodb_query_s.js" uit
C:\Users\Your Name>node demo_mongodb_query_s.js
Wat je dit resultaat geeft:
[
{ _id:
58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard',
address: 'Sky st 331' },
{ _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway
1633' }
]