2013-08-02 114 views
2

我對MongoDB非常陌生,所以原諒我,如果這個問題的措辭不正確。我知道如何插入數據庫,我也知道我可以有一個嵌套的對象,並知道如何安裝它。我有:用MongoDB插入多個嵌套對象

Questions.insert({ Order:1, Question: "What type of property is it?", 
    Answers: { Order: 1, Answer: "House" }}); 

我從上面的語句希望你能看到我的目標,試圖對這個問題(這可能是插入多個答案,我要去哪裏錯了,這是正確的做法? )。所以,看着上面的說法,我以爲我可以插入多個答案,因爲這樣:

Questions.insert({ Order:1, Question: "What type of property is it?", 
    Answers: [{ Order: 1, Answer: "House" }, 
      { Order: 2, Answer: "Flat" }, 
      { Order: 3, Answer: "Bungalow" }, 
      { Order: 4, Answer: "Maisonette }] 
}); 

SyntaxError: Unexpected token ILLEGAL

+0

你看到了什麼錯誤?如果沒有具體的問題,很難診斷。 –

+0

@AlfieHanssen這是一個'這是正確的方法問題'不是'爲什麼不是這個工作'問題 – ediblecode

+0

順便說一句,你得到的SyntaxError是來自JavaScript的錯誤,而不是來自MongoDB - 它意味着你把命令一起不解析爲有效的JavaScript命令。 MongoDB的錯誤消息格式不同。 Per @potatosalad,你的方法沒有錯,你只是錯過了一個引號! –

回答

5

你缺少一個"在豪宅結束這哪裏是錯誤的來源。

{ Order: 4, Answer: "Maisonette }] 

否則您的查詢是插入嵌入式文檔的正確軌道。

+0

你的回答更恰當地解決了OP有問題比我的+1。 –

1

你的答案子文檔是一種表現得像一個陣列。還有,你可以用它來多個答案存儲在每個問題分兩種情況:

1)只需使用一個數組:

Questions.insert({order : 1, 
    question : "What type of property is it?", 
    answers : [ "House", "Flat", "Bungalow", "Maisonette" ] 
    }); 

2)方式的MongoDB有時會在內部存儲陣列是簡單地用一個序號爲關鍵的每個子文檔,像這樣:

Questions.insert({order : 1, 
    question : "What type of property is it?", 
    answers : {"1" : "House", 
       "2" : "Flat", 
       "3" : "Bungalow", 
       "4" : "Maisonette"} 
    }); 
+0

第一個給出了一個關於意外令牌的錯誤。第二個人工作,所以謝謝你! – ediblecode

+0

那是因爲我忘記了「複式小屋」的引用。編輯。 –

+1

@JimDagg,@danrhul的腳本也是正確的,除了這個缺少的引用''' –