2013-01-14 31 views
1

請採取以下措施。通過執行以下操作,我可以爲_id = 1提取記錄匹配「1967」。是否可以打印與1967年相匹配的獎項以及匹配「Penn」的學校名稱?是否可以從MongoDB中提取多個子數組?

db.bios.find({_id:1, "awards.year" : 1967},{"awards.$":1}).pretty() 


db.bios.insert(
    { 
     _id: 1, 
     awards: [ 
      { 
       award: 'W.W. McDowell Award', 
       year: 1967, 
       by: 'IEEE Computer Society' 
      }, 
      { 
       award: 'National Medal of Science', 
       year: 1975, 
       by: 'National Science Foundation' 
      }, 
     ], 
     "schools" : [ 
      { 
       name : "Harvard", 
       year : 1945 
      }, 
      { 
       name : "Penn", 
       year : 1950 
      } 
     ] 
    } 
) 

回答

3

由於V2.2.2,你只能使用每個查詢一個$位置操作,但你可以使用$elemMatch投影算多次這樣做:

db.bios.find({_id:1}, { 
    awards: {$elemMatch: {year: 1967}}, 
    schools: {$elemMatch: {name: "Penn"}} 
}).pretty() 

輸出:

{ 
    "_id": 1, 
    "awards": [ 
    { 
     "award": "W.W. McDowell Award", 
     "year": 1967, 
     "by": "IEEE Computer Society" 
    } 
    ], 
    "schools": [ 
    { 
     "name": "Penn", 
     "year": 1950 
    } 
    ] 
} 
相關問題