2016-06-22 4 views
1

У меня есть структура документа, как:MongoDB экстракт поддокумента как фактический документ

{ 
    _id: '323423423fsdr2', 
    title: 'hey', 
    location: 'Someplace', 
    draft: { 
     title: 'hey im a draft', 
     location: 'Someplace', 
    } 
} 

Как бы я запрашиваю Монго получить только черновой вариант, но есть он вернулся, как если бы это были документ корневого уровня, как:

db.collection.find(somequery) 

возвращает

{ 
    title: 'hey im a draft', 
    location: 'Someplace' 
} 

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

ответ

1

агрегация является единственным выбором в этом случае использовать $match передать свой фильтр увидеть больше here

db.collection.aggregate([{ 
      $project : { 
       _id : 0, 
       title : "$draft.title", 
       location : "$draft.location" 
      } 
     } 
    ]) 
+0

Возможно ли это без указания каждого поля? Поскольку поля могут быть неизвестны – wazzaday

+0

@wazzaday - это печально, но нет .... или, может быть, еще нет :-). – profesor79

+0

Хорошо, спасибо за быстрый ответ, отметим как принято. – wazzaday