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