PHP スクリプトのバグが原因で、MongoDB に複数の誤ったエントリを作成してしまいました。具体的には、$addToSet と $each を使用していましたが、特定の状況下では、MongoDB オブジェクトが次のように間違って更新されます。
array (
'_id' => new MongoId("4fa4f815a6a54cedde000000"),
'poster' => 'alex@randommail.com',
'image' =>
array (
'0' => 'image1.jpg',
'1' => 'image2.jpg',
'2' => 'image3.png',
'3' =>
array (
'$each' => NULL,
),
),
「image.3」は他の配列エントリとは異なり、間違ったエントリであることがわかります。関連する PHP スクリプトを修正しましたが、MongoDB で影響を受けるすべてのエントリを追跡してそのようなエントリを削除するのは困難です。
MongoDB で画像配列エントリのいずれかに文字列ではなく別の配列が含まれているかどうかを確認する方法はありますか? サブ配列を含むインデックスは変数であるため、すべてのエントリに対して image.3 で $type チェックを実行することはできません。
任意の提案を使用できます。ありがとう!