以下のドキュメントにネストされている「回答」オブジェクトの 1 つを削除する必要があります。私が探している答えのテキストがあります。質問のインデックスや、配列にドリルダウンする必要がある回答がありません。
たとえば、ドリルダウンしようとしている質問のテキストが「これは質問です」であることを知っています。削除したい回答は「Answer One」です。
どうやってそれをするつもりですか?
サンプルの MongoDB Doc は次のとおりです: (クイズには質問があります。質問には回答があります)。
{
name: "Sample Quiz",
categories: [
{ name: "testcategory1", description: "this is a test category" }
,{ name: "categoryTWO", description: "the second category" }
],
questions: [
{ text: "This is a question."
,answers: [
{text: "Answer One", affected_categories: "testcategory1"}
,{text: "Answer Two", affected_categories: "testcategory1"}
,{text: "Answer Three", affected_categories: "categoryTWO"}
]
}
,{ text: "This is the second question."
,answers: [
{text: "Mepho One", affected_categories: "testcategory1"}
,{text: "Answer Toodlydoo", affected_categories: "testcategory1"}
,{text: "Lehmen Sumtin", affected_categories: "categoryTWO"}
]
}
],
}
1 レベル下にネストされたアイテム (この場合は質問) を削除していたとき、次のようなクエリでそれを行うことができました。
Quizzes.update(
{ _id: quizID, 'questions.text': questionText },
{ $pull: { questions: {text: questionText }}}
);
(ここで説明されているとおり: http://docs.mongodb.org/manual/core/update/#Updating-ModifierOperationsの「位置を指定せずに要素を更新する」というタイトルのセクション)
私はそれを次のようなものに拡張しようとしました:
Quizzes.update(
{ _id: quizID, 'answers.text': answerText },
{ $pull: { questions: {text: questionText {answers: {text: answerText }}}}}
);
しかし、運がありませんでした。
どんなアイデアでも大歓迎です。