Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 如何在不知道其位置的情况下删除Mongo对象(向下嵌套2个数组)?_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 如何在不知道其位置的情况下删除Mongo对象(向下嵌套2个数组)?

Javascript 如何在不知道其位置的情况下删除Mongo对象(向下嵌套2个数组)?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我需要删除下面文档中嵌套的一个“answers”对象。我有我要找的答案的文本。我没有深入到数组中所需的问题或答案的索引 例如,我知道我试图深入研究的问题的文本是“这是一个问题”,我想删除的答案是“答案一” 你会怎么做呢 以下是MongoDB文档示例: (测验有问题;问题有答案) 当我删除一个嵌套在下一层的项(在本例中是一个问题)时,我可以使用如下查询: Quizzes.update( { _id: quizID, 'questions.text': questionText

我需要删除下面文档中嵌套的一个“answers”对象。我有我要找的答案的文本。我没有深入到数组中所需的问题或答案的索引

例如,我知道我试图深入研究的问题的文本是“这是一个问题”,我想删除的答案是“答案一”

你会怎么做呢

以下是MongoDB文档示例: (测验有问题;问题有答案)

当我删除一个嵌套在下一层的项(在本例中是一个问题)时,我可以使用如下查询:

    Quizzes.update(
      { _id: quizID, 'questions.text': questionText },
      { $pull: { questions: {text: questionText }}}
    );
(如本文所述:,在标题为“更新元素而不指定其位置”的部分中)

我试着将其扩展为:

Quizzes.update(
  { _id: quizID, 'answers.text': answerText },
  { $pull: { questions: {text: questionText {answers: {text: answerText }}}}}
);
但是没有任何运气

任何想法都将不胜感激。

结合$pull条件使用:

> db.quizzes.update(
      {_id:<quizID>, "questions.text":"This is the second question."}, 
      {$pull:{ "questions.$.answers":{"text":"Answer Toodlydoo"}}}
);
>db.quizzes.update(
{{u id:,“questions.text:“这是第二个问题。”},
{$pull:{“问题.$.answers”:{“文本”:“回答Toodlydoo”}}
);

上面的内容可以删除第二个问题的第二个答案。

无论如何,如果你有一个明智的建议,我愿意改变模式——正如你可能知道的那样,我的数据结构实际上只是被推到MongoDB中的JSON,这似乎否定了Mongo的大部分功能。
> db.quizzes.update(
      {_id:<quizID>, "questions.text":"This is the second question."}, 
      {$pull:{ "questions.$.answers":{"text":"Answer Toodlydoo"}}}
);