Элемент массива запросов, а затем поле из MongoDB

Предположим, у меня есть следующий документ в коллекции:

{  
   "_id":ObjectId("1123562e7c594c12942f"),
   "figures":[  
      {  
         "shape":"square",
         "color":"blue"
      },
      {  
         "shape":"triangle",
         "color":"black"
      }
   ]
}

Я хотел бы сделать запрос, который выбирает поле "shape" из второго элемента массива "figures".

Используя db.test.find({}, {"figures": {$slice: [2, 1]}}), вы можете получить доступ ко второму элементу "figures", но можете ли вы также выбрать оттуда только поле "shape"?


person davalo    schedule 06.01.2016    source источник
comment
Используете .find()? Нет. Вы можете использовать метод .aggregate(). Но лучше делать это на стороне клиента.   -  person styvane    schedule 06.01.2016
comment
проблема для меня сделать это на стороне клиента заключается в том, что мои фактические записи массива имеют поля, которые огромны, и поэтому я не хочу запрашивать все поля   -  person davalo    schedule 06.01.2016


Ответы (1)


Используйте запрос ниже

db.test.find({}, {"figures": {$slice: [2, 1]}, "figures.shape": 1}).pretty();
person msvairam    schedule 06.01.2016