2013-08-02 88 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的脚本也是正确的,除了这个缺少的引用''' –