2012-08-11 59 views
4

讓我們假設我有這樣嵌套對象模式

var Language = new Schema({ 
    name: { type: String, unique: true, required: true }, 
    pos: [{ 
     name: String, 
     attributes: [{ 
      name: String 
     }] 
    }] 
}); 

的模式將在pos每個項目,並在attributes,有_id?如果我向pos數組中的name字段添加唯一索引,那麼將對該數組執行唯一性還是對所有條目都是唯一的?

回答

3

沒有,像posattributes嵌入文檔不擁有自己的模式不具有_id財產。

如果您在pos陣列中添加唯一索引到name場,唯一性會在整個收集被強制執行,但不一個單個文檔的數組中。見this post

+0

這是不正確的作爲Mongoose 4,其中'pos'和'屬性'將得到自己的模式。 – 2016-04-22 13:25:10

1

在Mongoose 4中,posattributes將獲得他們自己的模式。你可以防止他們得到_id這樣的屬性:

// ... 
    attributes: [{ 
     name: String, 
     _id: false 
    }] 
// ...