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

Как да върнете само стойността в MongoDB

Когато използвате методи като find() или findOne() в MongoDB, по подразбиране получавате върнати целия документ. И ако използвате прогнози, можете да върнете конкретни двойки ключ/стойност.

Но какво ще стане, ако искате само стойността?

Можете да извлечете стойността на поле, като добавите името на това поле към вашата заявка, когато използвате findOne() .

Пример

Да предположим, че имаме колекция, наречена products със следните документи:

{ "_id" :1, "продукт" :"Прилеп", "размери" :[ "S", "M", "L" ] }{ "_id" :2, "продукт" :"Шапка" , "размери" :[ "S", "L", "XL" ] }{ "_id" :3, "продукт" :"Капачка", "размери" :[ "M", "L" ] } 

Ако искаме да върнем продукта на първия документ, бихме могли да направим следното:

db.products.findOne().product 

Резултат:

Прилеп

Имайте предвид, че използвахме findOne() метод. Тази техника не работи с find() метод. findOne() методът връща единичен документ, докато find() метод просто връща курсор към документа.

Ако искаме да върнем масива, можем да направим това:

db.products.findOne().sizes 

Резултат:

[ "S", "M", "L" ]

И можем да получим стойност на масива, като се позоваваме на неговия индекс:

db.products.findOne().sizes[0] 

Резултат:

S

Масивите са базирани на нула и така 0 препраща към първия елемент в масива, 1 препраща към втория елемент, 2 третият и т.н.

Конкретен документ

По подразбиране findOne() метод връща първия документ в колекцията. Можем да изберем различен документ, като посочим подаване на заявка като първи аргумент.

Казвам „първи аргумент“, защото findOne() приема също projection аргумент като незадължителен втори аргумент.

db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes 

Резултат:

[ "S", "L", "XL" ] 

В този случай добавих аргумент за проекция, но това нямаше ефект върху резултата. Но би имало ефект, ако бях посочил стойност от 0. Това щеше да доведе до нищо не се връща.

Вградени документи

Можете да използвате нотация с точки, за да върнете стойности от вградени документи

Примерен документ:

{ "_id" :1, "name" :"Wag", "details" :{ "type" :"Dog", "weight" :20 }}

Можем да направим следното, за да върнем стойност от вградения документ:

db.pets.findOne().details.type 

Резултат:

Куче


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам променлива като име на поле в mongodb-native findOne()?

  2. Използване на множество бази данни Mongodb с Meteor.js

  3. 5 начина да проверите размера на колекция в MongoDB

  4. Как да използвате $push модификатор за актуализиране в MongoDB и C#, когато актуализирате масив в документ

  5. Mongoose и множество бази данни в един проект node.js