Руководство по MongoDB. Projection.

В данной статье мы рассмотрим, как получать только необходимые данные документа коллекции (проекция). Например, наш документ содержит 100 полей (имя, возраст, адрес и т.д), а нам необходимо получить только имена всех документов.


Метод find()

Ранее мы уже рассматривали метод find()  для запроса документа коллекции. Мы получали все данные документа.

Для того, чтобы ограничить данные, которые будут получены в результате выполнения запроса нам необходимо указать список атрибутов документа со значениями 1 или 0. 1 – означает ,что данный атрибут будет выведен, 0 – нет.

Данный метод имеет следующий синтаксис:


db.ИМЯ_КОЛЛЕКЦИИ.find( {}, {АТТРИБУТ: 1} )

Для понимания того, как это работает на практике, рассмотрим простой пример:

Предположим, что у нас есть коллекция developers, которая содержит следующие документы:


> db.developers.find().pretty()
{
	"_id" : ObjectId("5815f4e735ee883c37ac8b4d"),
	"title" : "Eugene Suleimanov",
	"specialty" : "Java",
	"skills" : [
		"Java",
		"Hibernate",
		"Spring"
	],
	"salary" : 3500
}
{
	"_id" : ObjectId("5815f4ec35ee883c37ac8b4e"),
	"title" : "Ivan Ivanov",
	"specialty" : "Java",
	"skills" : [
		"Java",
		"Hibernate",
		"Spring"
	],
	"salary" : 3500
}
{
	"_id" : ObjectId("5815f4f535ee883c37ac8b4f"),
	"title" : "Nikolay Nikolaev",
	"specialty" : "C++",
	"skills" : [
		"C++",
		"STL",
		"SQL"
	],
	"salary" : 3500
}

Допустим, что мы хотим узнать только специальности наших разработчиков. Для этого мы можем использовать следующую команду:


> db.developers.find( {}, {_id: 0, "specialty": 1})
{ "specialty" : "Java" }
{ "specialty" : "Java" }
{ "specialty" : "C++" }

Для того, чтобы выводить специальности и id документов, мы можем использовать следующую команду:


> db.developers.find( {}, {"specialty": 1})
{ "_id" : ObjectId("5815f4e735ee883c37ac8b4d"), "specialty" : "Java" }
{ "_id" : ObjectId("5815f4ec35ee883c37ac8b4e"), "specialty" : "Java" }
{ "_id" : ObjectId("5815f4f535ee883c37ac8b4f"), "specialty" : "C++" }

На этом мы заканчиваем изучение проекции в MongoDB.
В следующей статье мы рассмотрим способ ограничения количества получаемых из коллекции документов.