Node.js MongoDB Znajdź


W MongoDB używamy metod find i findOne do wyszukiwania danych w kolekcji.

Podobnie jak instrukcja SELECT służy do wyszukiwania danych w tabeli w bazie danych MySQL.

Znajdź jeden

Aby wybrać dane z kolekcji w MongoDB, możemy skorzystać z findOne()metody.

Metoda findOne()zwraca pierwsze wystąpienie w zaznaczeniu.

Pierwszym parametrem findOne()metody jest obiekt zapytania. W tym przykładzie używamy pustego obiektu zapytania, który wybiera wszystkie dokumenty w kolekcji (ale zwraca tylko pierwszy dokument).

Przykład

Znajdź pierwszy dokument w kolekcji klientów:

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

Zapisz powyższy kod w pliku o nazwie „demo_mongodb_findone.js” i uruchom plik:

Uruchom „demo_mongodb_findone.js”

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

Co da ci ten wynik:

Company Inc.


Znajdź wszystko

Aby wybrać dane z tabeli w MongoDB, możemy również skorzystać z find()metody.

Metoda find()zwraca wszystkie wystąpienia w zaznaczeniu.

Pierwszym parametrem find()metody jest obiekt zapytania. W tym przykładzie używamy pustego obiektu zapytania, który wybiera wszystkie dokumenty w kolekcji.

Brak parametrów w metodzie find() daje taki sam wynik jak SELECT * w MySQL.

Przykład

Znajdź wszystkie dokumenty w kolekcji klientów:

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

Zapisz powyższy kod w pliku o nazwie „demo_mongodb_find.js” i uruchom plik:

Uruchom „demo_mongodb_find.js”

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

Co da ci ten wynik:

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

Znajdź trochę

Drugim parametrem find()metody jest projectionobiekt opisujący pola, które należy uwzględnić w wyniku.

Ten parametr jest opcjonalny, a jeśli zostanie pominięty, wszystkie pola zostaną uwzględnione w wyniku.

Przykład

Zwróć pola "nazwa" i "adres" wszystkich dokumentów w kolekcji klientów:

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

Zapisz powyższy kod w pliku o nazwie „demo_mongodb_find_fields.js” i uruchom plik:

Uruchom „demo_mongodb_find_fields.js”

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

Co da ci ten wynik:

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

Nie możesz określić zarówno wartości 0, jak i 1 w tym samym obiekcie (z wyjątkiem sytuacji, gdy jedno z pól jest polem _id). Jeśli określisz pole z wartością 0, wszystkie inne pola otrzymają wartość 1 i na odwrót:

Przykład

Ten przykład wykluczy „adres” z wyniku:

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

Aby wykluczyć pole _id, musisz ustawić jego wartość na 0:

Przykład

Ten przykład zwróci tylko pole „nazwa”:

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

Przykład

Ten przykład da ci taki sam wynik jak pierwszy przykład; zwróć wszystkie pola z wyjątkiem pola _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();
  });
});

Przykład

Otrzymasz błąd, jeśli określisz zarówno wartości 0, jak i 1 w tym samym obiekcie (z wyjątkiem sytuacji, gdy jedno z pól jest polem _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();
  });
});

Obiekt wynikowy

Jak widać z powyższego przykładu, wynik można przekonwertować na tablicę zawierającą każdy dokument jako obiekt.

Aby zwrócić np. adres trzeciego dokumentu, po prostu odwołaj się do właściwości address obiektu trzeciej tablicy:

Przykład

Zwróć adres trzeciego dokumentu:

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

Który przyniesie ten wynik:

Apple st 652