この質問は私のものと非常に似ています:配列エントリの1つにMongoDBのサブ配列が含まれているかどうかを確認する方法はありますか?
ただし、私の場合、いくつかの更新でまだ問題が発生しています。タグを取得するアグリゲーターを介してデータを取得しています。タグはこんな感じ$tags = array("red","green","blue","purple",...);
私の更新クエリは次のようになります。
$criteria = array('_id' => new MongoId($myID));
$db->aggregation->update($criteria,
array('$addToSet' =>
array('tags' =>
array('$each' => $tags)))),
true); //add tags
信じられないかもしれませんが、問題なく動作する場合もありますが、そうでない場合もあります。以下の例で、どれが機能し、どれが機能しなかったかを確認できます。
[74] => red
[75] => orange
[76] => yellow
[77] => green
[78] => Array (
[$each] => Array (
[0] => blue
[1] => indigo
[2] => purple
)
)
[79] => violet
[80] => brown
[81] => black
これがコレクションの配列に適切に挿入される場合とそうでない場合がある理由を誰かに説明できますか? phpmoadmin (および MongoDB シェル バージョン 2.4.3 'find()') を使用して、挿入の結果を表示しています。