Zrozumienie relacji i kluczy obcych w Mongoose

W MongoDB / Mongoose, jak zdefiniować relację? Myślę, że widziałem kilka sposobów, ale nie jestem pewien, czy rozumiem różnice lub kiedy używam tego. Używam Mongoose 3

ZdefiniowałemTodo iTodoList model, w którym związek jest oczywisty. Tak postępuje za doktoramihttp://mongoosejs.com/docs/documents.html, Zdefiniowałem klasy takie jak:

# Todo.coffee
mongoose = require "mongoose"

todoSchema = mongoose.Schema
    name: String
    desc: String
    dueOn: Date
    completedOn: Date

module.exports = mongoose.model "Todo", todoSchema

# TodoList.coffee

mongoose = require "mongoose"
Todo = require "./Todo"

todoListSchema = mongoose.Schema
    name: String
    todos: [Todo.schema]

module.exports = mongoose.model "TodoList", todoListSchema

Potem próbowałem testować klasy:

list = new TodoList
    name: "List 1"
    todos: [
        { name: "Todo 1", desc: "Hello", dueOn: new Date(2012,10,1), completedOn: new Date(2012,10,2) }
        { name: "Todo 2" }
        { name: "Todo 3", desc: "Hello 2", dueOn: new Date(2012,10,6), completedOn: new Date(2012,10,2) }
        { name: "Todo 4" }
    ]
#list.todos.push { name: "Todo 5" }
console.log "List", list
list.save (err) ->
    if !err
        TodoList.find {}, (err, lists) ->
            console.log "TODOS"
            console.log lists.length, lists
            done(err)
    else 
        console.log "ERROR!!!"
        done err

Kiedy próbuję to zrobićTodo.find() Nic nie dostaję, więc Model (Todo.coffee) jest trochę zbędny? To wygląda jakTodo są przechowywane wTodoList, jako użytkownik, może mnie to nie obchodzić, ale zastanawiam się, jakie są implikacje? Na przykład. czy dokument będzie za duży? 1 TodoList ze zbyt wieloma Todos? Czy to ma znaczenie? Co jeśli zezwolę na zagnieżdżone Todos (nie, że chcę to zrobić tylko dla zrozumienia), czy lepiej jest wtedy przechowywać dokumenty oddzielnie? Jak mam to zrobić, jeśli tego pragnę i kiedy to zrobię?

W Mongoose 2 widziałem inną metodę, nie wiem, czy jest to możliwe w 3, coś w rodzaju używaniaObjectId zamiast zagnieżdżonych dokumentów. Może to przechowywać osobno?

questionAnswers(1)

yourAnswerToTheQuestion