7

これが既に存在する場合はドキュメントを置き換えたいのですが、そうでない場合は挿入したいです。どうすればmongoDbでそれを行うことができますか?

私はこのようなものが必要ですが、1つのクエリで:

find by a "where statement"
if exists, replace whole document
else, insert

ありがとうございました!

4

2 に答える 2

5

保存操作を使用することもできます。これは、更新よりもはるかに高速で (私のテストでは x70 高速)、目的に適合しますが、ドキュメント全体を入力することを忘れないでください。

于 2013-12-09T14:13:33.603 に答える
1

コレクションの更新を使用します。

以下の例では、最初の update 呼び出しがドキュメント (クエリからの名前フィールドを含む) を「挿入または置換」します。2 番目の update 呼び出しは、ドキュメントを挿入するか、ドキュメントの残りの部分をそのままにして Joe のジョブを更新します。違いは「$set」操作です。

<?php

$c->update(
    array("name" => "joe"),
    array("username" => "joe312", "job" => "Codemonkey"), 
    array("upsert" => true));

$c->update(
    array("name" => "joe"),
    array("$set" => array("job" => "Bartender")), 
    array("upsert" => true));

?>
于 2013-11-06T14:29:11.790 に答える