Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 支持oplog的数据模型架构_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 支持oplog的数据模型架构

Javascript 支持oplog的数据模型架构,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我正在尝试用Meteor实现一个调查应用程序。我对数据建模的第一个想法是: 我收集答案的投稿集: { formId: "........", values: [ {question: "What is your name?", answer:"Aykut Yaman"}, {question: "How old..?", answer:"7"}, {question: "Hobbies?", answer: ["Kitap Okumak", "Spor Yapma

我正在尝试用Meteor实现一个调查应用程序。我对数据建模的第一个想法是:

我收集答案的投稿集:

{
  formId: "........",
  values: [
    {question: "What is your name?", answer:"Aykut Yaman"},
    {question: "How old..?", answer:"7"},
    {question: "Hobbies?", answer: ["Kitap Okumak", "Spor Yapmak"]},
    {question: "Foo", answer: "Lorem ipsum ..."}
  ]
}
然后我会像这样询问收集,以了解调查结果,如何对某个问题给出特定答案:

submissions.find({$and: [{"values.answer": "7"}, {"values.question": "How old..?"}]})
然后我意识到这个查询,我必须使用
$elemMatch
。但看来,
$elemMatch
是一颗流星


如何更改查询或集合以使用oplog,并使集合变得简单?

更好的模式是将答案从问题中分离出来:

{
  formId: "idOfForm",
  values: [
    {_id: "id1", question: "What is your name?"},
    {_id: "id2", question: "How old..?", answer:"7"},
    {_id: "id3", question: "Hobbies?", answer: ["Kitap Okumak", "Spor Yapmak"]},
    {_id: "id4", question: "Foo", answer: "Lorem ipsum ..."}
  ]
}
在答案集合中

{_id: "answer1", formId: "idOfForm", questionId: "id1", answer:"Aykut Yaman"}
... and so on 
这将为您节省一些磁盘空间带来额外的好处,因为您不必为每个答案存储问题。您不必为每个答案存储
formId
,但它可能会提高查询表单的性能。

不清楚表单是如何发挥作用的。如果MongoDB部署由副本集支持,则任何添加/更新/删除数据的操作都将保存到主服务器上的oplog,以便辅助服务器可以复制和应用这些操作。