2017-02-21 59 views
0

這裏面嵌入文檔的領域是我遇到的情況爲例(假裝每個學校都有學生的陣列,並且只有1結果):抑制陣列

db.students.find(_id: { $in: school.students }) 

{ 
    _id: 1, 
    zipcode: "63109", 
    students: [ 
      { name: "john", school: 102, age: 10 }, 
      { name: "jess", school: 102, age: 11 }, 
      { name: "jeff", school: 108, age: 15 } 
     ] 
} 

我怎麼會做類似的查詢忽略學生內部的學生陣列中的「學校」字段?

例如,我該如何讓結果看起來像這樣?

{ 
    _id: 1, 
    zipcode: "63109", 
    students: [ 
      { name: "john", age: 10 }, 
      { name: "jess", age: 11 }, 
      { name: "jeff", age: 15 } 
     ] 
} 

回答

2

你可以嘗試下面的東西。使用投影來保持你喜歡的領域。

db.students.find({}, {zipcode:1,"students.name" :1,"students.age" : 1}) 
+0

不是聽起來很鈍,但你有沒有測試過嗎?我認爲這是不可能的,因爲學生不是一個對象,而不是一組對象。可能是像'students.0.name'這樣的東西,但是所有的學生呢?它可能是'學生。$。名字'嗎? –

+1

是的,我做過。它也應該與嵌入式陣列一起工作。這裏是文檔https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/#projection-on-embedded-documents-in-an-array – Veeram

+0

我有幸測試它它奇妙地工作!謝謝!我認爲它不起作用,我需要使用MongoDB聚合函數的投影。 –