Учебник по Node.js

ГЛАВНАЯ СТРАНИЦА Node.js Введение в Node.js Node.js Начало работы Модули Node.js HTTP-модуль Node.js Файловая система Node.js URL-модуль Node.js Node.js NPM События Node.js Загрузить файлы Node.js Электронная почта Node.js

Node.js MySQL

Начать работу с MySQL MySQL Создать базу данных MySQL Создать таблицу MySQL вставить в MySQL выбрать из MySQL Где Порядок MySQL MySQL Удалить Таблица удаления MySQL Обновление MySQL Лимит MySQL MySQL присоединиться

Node.js MongoDB

Начать работу с MongoDB MongoDB Создать базу данных MongoDB Создать коллекцию Вставка MongoDB MongoDB Найти Запрос MongoDB Сортировка MongoDB MongoDB Удалить Коллекция MongoDB Drop Обновление MongoDB Лимит MongoDB Присоединиться к MongoDB

Малиновый Пи

Начать работу с RasPi Введение в RasPi GPIO Мигающий светодиод RasPi Светодиод RasPi и кнопка Проточные светодиоды RasPi Веб-сокет RasPi Веб-сокет со светодиодной подсветкой RasPi RGB Компоненты RasPi

Справочник по Node.js

Встроенные модули

Node.js MongoDB Найти


В MongoDB мы используем методы find и findOne для поиска данных в коллекции.

Так же, как оператор SELECT используется для поиска данных в таблице в базе данных MySQL.

Найдите один

Чтобы выбрать данные из коллекции в MongoDB, мы можем использовать findOne()метод.

Метод findOne()возвращает первое вхождение в выборке.

Первым параметром findOne()метода является объект запроса. В этом примере мы используем пустой объект запроса, который выбирает все документы в коллекции (но возвращает только первый документ).

Пример

Найдите первый документ в коллекции клиентов:

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

Сохраните приведенный выше код в файле с именем «demo_mongodb_findone.js» и запустите файл:

Запустите «demo_mongodb_findone.js»

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

Что даст вам этот результат:

Company Inc.


Найти все

Чтобы выбрать данные из таблицы в MongoDB, мы также можем использовать find()метод.

Метод find()возвращает все вхождения в выборке.

Первым параметром find()метода является объект запроса. В этом примере мы используем пустой объект запроса, который выбирает все документы в коллекции.

Отсутствие параметров в методе find() дает вам тот же результат, что и SELECT * в MySQL.

Пример

Найдите все документы в коллекции клиентов:

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

Сохраните приведенный выше код в файле с именем «demo_mongodb_find.js» и запустите файл:

Запустите «demo_mongodb_find.js»

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

Что даст вам этот результат:

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

Найдите некоторые

Второй параметр find()метода — это projectionобъект, описывающий, какие поля включать в результат.

Этот параметр является необязательным, и если его опустить, в результат будут включены все поля.

Пример

Вернуть поля «имя» и «адрес» всех документов в коллекции клиентов:

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

Сохраните приведенный выше код в файле с именем «demo_mongodb_find_fields.js» и запустите файл:

Запустите «demo_mongodb_find_fields.js»

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

Что даст вам этот результат:

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

Вы не можете указывать значения 0 и 1 в одном и том же объекте (за исключением случаев, когда одно из полей является полем _id). Если вы укажете поле со значением 0, все остальные поля получат значение 1, и наоборот:

Пример

Этот пример исключит «адрес» из результата:

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

Чтобы исключить поле _id, необходимо установить его значение равным 0:

Пример

Этот пример вернет только поле «имя»:

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

Пример

Этот пример даст вам тот же результат, что и первый пример; вернуть все поля, кроме поля _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();
  });
});

Пример

Вы получите ошибку, если укажете значения 0 и 1 в одном и том же объекте (кроме случаев, когда одно из полей является полем _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();
  });
});

Объект результата

Как видно из результата приведенного выше примера, результат можно преобразовать в массив, содержащий каждый документ как объект.

Чтобы вернуть, например, адрес третьего документа, просто обратитесь к свойству адреса третьего объекта массива:

Пример

Вернуть адрес третьего документа:

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

Что даст этот результат:

Apple st 652