MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB - Проекционни заявки

заявка за проекция е заявка, в която посочвате кои полета трябва да бъдат върнати.

В MongoDB, когато правите заявка за колекция с помощта на db.collection.find() метод, можете да посочите кои полета искате да върнете.

Можете да направите това, като включите имената на полетата във вашата заявка и добавите 1 или 0 до тях, за да посочите дали трябва да се върне или не. Това е проекция параметър. Проекционен параметър от 1 ще покаже полето и 0 ще го скрие.

Пример

Първо нека направим заявка без проекция (за да можем да видим колко полета са върнати):

Без проекция

db.musicians.find( { instrument: "Vocals"} )

Резултат:

{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }

С проекция

Сега нека използваме проекция, за да покажем само име поле:

db.musicians.find( { instrument: "Vocals" }, { name: 1 } )

Резултат:

{ "_id" : 1, "name" : "Ian Gillan" }
{ "_id" : 6, "name" : "Jeff Martin" }

Ще забележите, че _id полето се включва автоматично, дори и да не го посочите. Можете да изключите това поле, като използвате 0 срещу него:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } )

Резултат:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin" }

Смесване на включвания и изключения

Не можете да смесвате 1 s и 0 s (с изключение на _id поле). Ако се опитате да смесите включвания и изключения, по следния начин:

db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } )

В крайна сметка ще получите тази грешка:

Error: error: {
	"waitedMS" : NumberLong(0),
	"ok" : 0,
	"errmsg" : "Projection cannot have a mix of inclusion and exclusion.",
	"code" : 2
}

Така че или включете полета, или ги изключете – не и двете.

Ето пример за посочване на полета чрез изключване:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } )

Резултат:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin", "born" : 1969 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализирайте стойност в MongoDB въз основа на текущата й стойност

  2. Stripe:Трябва да посочи източник или клиент

  3. MongoDb Aggregation:Как мога да групирам масив-1 въз основа на друг масив-2, когато са дадени масив-1 и масив-2?

  4. Как да конвертирам от тип данни низ към дата?

  5. Model.find().toArray() твърди, че няма метод .toArray().