2015-11-26 56 views
0

這裏的課程集合:如何限制在MongoDB中返回嵌套數組場

{ 
    "_id": "RtPA6Cxs3fzJcGpgP", 
    "Seasons": [ 
    { 
     "title": "intro", 
     "Episodes": [ 
     { 
      "title": "what is c++?", 
      "length": "12:52", 
      "free_url": "free-episode-1.mp4" 
     }, 
     { 
      "title": "why c++?", 
      "length": "05:20", 
      "paid_url": "premium-episode-1.mp4" 
     } 
     ] 
    }, 
    { 
     "title": "first season", 
     "Episodes": [ 
     { 
      "title": "declare variables", 
      "length": "12:35", 
      "paid_url": "premium-episode-2.mp4" 
     }, 
     { 
      "title": "pointers", 
      "length": "04:00", 
      "free_url": "free-episode-2.mp4" 
     } 
     ] 
    } 
    ] 
} 

我試圖讓(一切,除了paid_url S):

{ 
    "_id": "RtPA6Cxs3fzJcGpgP", 
    "Seasons": [ 
    { 
     "title": "intro", 
     "Episodes": [ 
     { 
      "title": "what is c++?", 
      "length": "12:52", 
      "free_url": "free-episode-1.mp4" 
     }, 
     { 
      "title": "why c++?", 
      "length": "05:20" 
     } 
     ] 
    }, 
    { 
     "title": "first season", 
     "Episodes": [ 
     { 
      "title": "declare variables", 
      "length": "12:35" 
     }, 
     { 
      "title": "pointers", 
      "length": "04:00", 
      "free_url": "free-episode-2.mp4" 
     } 
     ] 
    } 
    ] 
} 

嘗試了這些疑問: 1.這適用於客戶端(鍍鉻控制檯),但它不適用於「流星芒戈」:

db.courses.find({_id: "RtPA6Cxs3fzJcGpgP"}, {fields: {"Seasons.Episodes.paid_url": 0}}).fetch() 

我得到的 「流星蒙戈」 錯誤:

「$ ERR」:「無法規範化查詢:不支持的badValue投影選項:字段:{$四季情節$ paid_url:。0.0} 「`

  • 嘗試這樣做太:

    Courses.find({_id: this.params.id}, {fields: {"Seasons.$.Episodes.$.paid_url": 0}}); 
    
  • +0

    不能使用'$'你需要指定你正在尋找它的確切數量不是支持minimongo –

    +0

    的查詢工作,而不在鍍鉻$跡象控制檯,但它不適用於Meteor。 – l3est

    回答

    1

    這是正確的查詢:

    db.courses.find({_id: "RtPA6Cxs3fzJcGpgP"}, {"Seasons.Episodes.paid_url": 0}}) 
    

    無需領域的

    +0

    在流星中仍然不起作用。結果就像'db.courses.find({_ id:「RtPA6Cxs3fzJcGpgP」})' – l3est

    +0

    @ l3est我測試了查詢並且它按預期工作。 –

    +0

    @Matthias Eckhart我嘗試了第一個沒有獲取()的查詢並且它正在工作!我正在使用Meteor 1.2。 'db.courses.find({_ id:「RtPA6Cxs3fzJcGpgP」},{fields:{「Seasons.Episodes.paid_url」:0}})' – l3est