私は外部ソースからPHPでmongodbにデータをインポートしようとしています。外部データからのすべての行は1つのmongodbドキュメントです。すべての行には、uidという一意のIDがあります。MongoDBとPHPで多くの文書をアップします
私は次のことを試しています:同じuidを持つドキュメントがすでに存在しない場合(Upsert)、新しい行を挿入します。単一のドキュメントについては
、私は次の操作を行います:
$collection->updateOne(
["uid" => "2"],
['$set' => [
"newfield" => date("Y-m-d H:i:s"),
"name" => "Test"
]],
[
"upsert" => true
]
);
ステップ1:
は完全な文書を上書きすることが可能ですが、単に特定のフィールドを設定していませんか?このような何か:
$collection->updateOne(
["uid" => "2"],
[
"newfield" => date("Y-m-d H:i:s"),
"name" => "Test"
],
[
"upsert" => true
]
);
私はFirst key in $update argument is not an update operator
エラーが出るので、これは、機能していません。どうやってするの?パフォーマンス上の理由から
ステップ2
は、私は複数のドキュメントアップサートバルクにinsertManyまたはupdateMany機能を使用します。
しかし、どのようなフィルタ、私はupdateManyのために必要な操作を行います。
$db->updateMany(
[???????],
[
"newfield" => date("Y-m-d H:i:s"),
"name" => "XXX"
],
[
"upsert" => true
]
);
https://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts#answer-39224 –
しかし、基本的に両方の質問がつながっています。私は質問1を除いて質問2を解決することはできません。 – bernhardh
あなたはそれらを解決することはできません、どの順序で問題ではありません。それ以外の場合は、両方の権利を求めることはありませんか?推奨事項を尊重することは傷つきませんが、回答の可能性を高める可能性があります。 –