2016-08-18 15 views
1

既存のmongodbドキュメントに要素を挿入する際に問題があります。私はすぐに戻って「カウント配列」への単一の要素を挿入したいと、この周りを見た後、推奨の方法でしたが既存の配列にMongodbを挿入する

$count = array(); 
array_push($count, 0); 
$dbase->insert(array("_id"=> $_id,"count"=>$count)); 

は、現時点では私のデシベルでの単一の要素を含む配列があります
$count=4; 
$dbase->update(array('_id'=>'57b35f7bce23505c10000029'),array('$count'=>$count)); 

ただし、これはエラー(エラー500、内部サーバーエラー)を投げていますが、理由がわかりません。 Ivもinsertを使ってみましたが、新しい文書が作成されました。どんな助けもありがとう。データベース/コレクションへ

+1

new MongoId();の'...これはあなたが期待しているようには動作しません、下の私の答えを参照してください。 –

答えて

1

私はあなたがここに配列を必要とする理由は、配列とそのメンバーを更新するカップルの方法があります正確にはわからないものの...

接続

$m = new MongoClient(); 
$db = $m->your_database; 
$collection = $db->your_colection; 
配列

更新一員あなたはどうなる配列(この場合は0部材)の一方のメンバーを更新したい場合。 ..

$collection->update(
    array("_id"=> new MongoId("57b6556aa9087c06687ecd7c")), 
    array('$set'=>array("count.0"=> 4)) 
); 

$collection->update(
    array("_id"=> new MongoId("57b6556aa9087c06687ecd7c")), 
    array('$push'=>array("count"=> 4)) 
); 

あなたが今持っているでしょう...配列を行うことができます

アレイに新しい項目を追加したい場合は、あなたのカウントに追加します配列内の2つのメンバー。

注:countが実際に配列の場合にのみ機能します。これは、数の配列だったものになります数

$collection->update(
    array("_id"=> new MongoId("57b35f7bce23505c10000029")), 
    array('$set'=>array("count"=> 4)) 
); 

から

更新/変更「カウント」。

通常、複数の値を実際に格納する必要がない限り、ここでは配列を使用しないことをお勧めします。

また、お使いのMongoDB PHPドライバのバージョンに応じて、あなたが使用する必要があります:あなたはPHP変数 `$ countの値を` $のcount`を更新しようとしている

new MongoDB\BSON\ObjectID();代わり注

+0

ありがとうございました。私はあなたのために配列ソリューションを追加してくれたことを感謝しました。徹底的に解明してくれてありがとうございました。私はPHPを通してmongodbに関する多くの質問をクリアしました。ドキュメントはそれを作ったphpの別のバージョンのバージョンではぎとられているようでした私が探していたものを見つけるのを混乱させるので、もう一度感謝します。 – D3181

+0

@ Dean219、問題ありません!私は同意する、公式のPHPドキュメントはかなり混乱している&いくつかの単純な、より直接的な例を使用することができます。 :/ –

関連する問題