前提・実現したいこと
mongodbで、ネストした配列のなかから、特定の値を持つものを削除したいです。
発生している問題・エラーメッセージ
mongodbで以下のようなデータを持っています。
mongodbのデータ { "_id": Objectid('5a604dc83e4186270e5babf9'), "name": 'AAA', "contents" : [ { "contentsId" : "5ab728943e418643bd5e4d62", "contentsName" : "テスト1" } , { "contentsId" : "5a604dc83e4186270e5bad12", "contentsName" : "テスト2" } ] }, { "_id": Objectid('5a604dc83e4186270e5bad47'), "name": 'BBB', "contents" : [ { "contentsId" : "5ab728943e418643bd5e4d62", "contentsName" : "テスト1" } , { "contentsId" : "5a604dc83e4186270e5bad91", "contentsName" : "テスト3" } ] }
これらのデータのうち、'contents.contentsName':'テスト1'のデータを持つものについて、そのcontentsIdとcontentsNameを削除したいと思っています。
削除後のデータ { "_id": Objectid('5a604dc83e4186270e5babf9'), "name": 'AAA', "contents" : [ { "contentsId" : "5a604dc83e4186270e5bad12", "contentsName" : "テスト2" } ] }, { "_id": Objectid('5a604dc83e4186270e5bad47'), "name": 'BBB', "contents" : [ { "contentsId" : "5a604dc83e4186270e5bad91", "contentsName" : "テスト3" } ] }
試したこと
updateで$pullを使って削除しようとしていますが、エラーが出てしまいます。
> db.collection.update({} ,{$pull:[{contentsName:'テスト1'}]}); WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0, "writeError" : { "code" : 9, "errmsg" : "Modifiers operate on fields but we found type array instead. For example: {$mod: {<field>: ...}} not {$pull: [ { contentsName: \"テスト1\" } ]}" } })
削除するクエリーについてどのようにしたらできるか、教えていただけますと助かります!
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/25 09:07
2018/03/25 23:55
2018/03/26 03:10
2018/03/26 03:40
2018/03/26 03:47
2018/03/26 03:57