2013-05-14 11 views
9

Czy poniższy schemat zdefiniowany poprawnie lub nie writing muszą być writing: [Schema.Types.Mixed]lubwriting: [{}]?zrozumienie mangusta [Schema.Types.Mixed]

Oznacza to, że jeśli masz zestaw słowników - [{}, {}, {}] - nie można wstępnie zdefiniować struktury wewnętrznej, chyba że utworzysz inny schemat i osadzisz go. Czy to właściwa interpretacja dokumentów?

http://mongoosejs.com/docs/schematypes.html

var blogSchema = new mongoose.Schema({ 
    title: String, 
    writing: [{ 
     post: String, 
     two: Number, 
     three : Number, 
     four : String, 
     five : [{ a: String, 
        b : String, 
        c : String, 
        d: String, 
        e: { type: Date, default: Date.now }, 
       }] 
    }], 
}); 

Dzięki.

Odpowiedz

18

Ten schemat jest w porządku. Definiowanie obiektu w obrębie elementu schematu tablicowego jest domyślnie traktowane jako jego własny obiekt Schema. Jako takie będą mieć własne _id boiska, ale można wyłączyć, że poprzez wyraźne zdefiniowanie schematu z opcją _id niepełnosprawnych:

var blogSchema = new mongoose.Schema({ 
    title: String, 
    writing: [new Schema({ 
     post: String, 
     two: Number, 
     three : Number, 
     four : String, 
     five : [new Schema({ 
      a: String, 
      b: String, 
      c: String, 
      d: String, 
      e: { type: Date, default: Date.now }, 
     }, {_id: false})] 
    }, {_id: false})], 
}); 
+2

porządku. Ten "niejawny schemat" to duży wgląd. Dzięki. Czy to oznacza, że ​​powinienem używać .populate() do pracy z tymi. Starałem się uzyskać informacje ze słowników w tablicach. –

+2

@ cathy.sasaki Nie, jest to schemat dla obiektów osadzonych. Używasz tylko 'zapełnij', gdy twój schemat jawnie zawiera odniesienie do' ObjectId' do innej kolekcji (modelu). – JohnnyHK

+1

@ JonnyHK Got to. Jesteś czarodziejem w mongodb, czy istnieje specjalna książka, którą polecasz? A może po prostu marnujesz dokumentację? Próbuję wstać, aby stworzyć fundament wiedzy na ten temat. –