MongoDB チュートリアルlogin
MongoDB チュートリアル
著者:php.cn  更新時間:2022-04-21 17:49:03

MongoDB 更新ドキュメント


MongoDB は、update() メソッドと save() メソッドを使用して、コレクション内のドキュメントを更新します。次に、2 つの機能の用途とその違いを詳しく見てみましょう。


update() メソッド

update() メソッドは、既存のドキュメントを更新するために使用されます。構文形式は次のとおりです。

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

パラメーターの説明:

  • query : SQL 更新クエリの背後にある場所と同様の更新クエリ条件。

  • update : オブジェクトの更新と一部の更新演算子 ($、$inc... など) などは、SQL 更新クエリで設定した後、

  • upsert として理解することもできます: オプション, このパラメータは、更新レコードがない場合に objNew を挿入するかどうかを意味します。true は挿入を意味し、デフォルトは false で挿入しません。

  • multi : オプション。mongodb のデフォルト値は false で、最初に見つかったレコードのみが更新されます。このパラメーターが true の場合、条件に従って見つかった複数のレコードがすべて更新されます。

  • writeConcern : オプション、例外がスローされるレベル。

次のデータをコレクションcolに挿入します:

>db.col.insert({
    title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'php中文网',
    url: 'http://www.php.cn',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

その後、update()メソッドを通じてタイトル(title)を更新します:

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息
> db.col.find().pretty()
{
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "php中文网",
        "url" : "http://www.php.cn",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
>

タイトル(title)がから変更されていることがわかります。オリジナルの「MongoDB チュートリアル」を「MongoDB」に更新しました。

上記のステートメントは、最初に検出されたドキュメントのみを変更します。複数の同一のドキュメントを変更したい場合は、multi パラメーターを true に設定する必要があります。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

save() メソッド

save() メソッドは、既存のドキュメントを受信ドキュメントで置き換えます。構文形式は次のとおりです。

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)

パラメーターの説明:

  • document : 文書データ。

  • writeConcern : オプション、例外がスローされるレベル。

次の例では、ドキュメント データを _id 56064f89ade2f21f36b03136 で置き換えました。

>db.col.save({
	"_id" : ObjectId("56064f89ade2f21f36b03136"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "php",
    "url" : "http://www.php.cn",
    "tags" : [
            "mongodb",
            "NoSQL"
    ],
    "likes" : 110
})

置換が成功すると、find() コマンドを使用して置き換えられたデータを表示できます

>db.col.find().pretty()
{
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "php",
        "url" : "http://www.php.cn",
        "tags" : [
                "mongodb",
                "NoSQL"
        ],
        "likes" : 110
}
>

その他の例

最初のレコードのみを更新します:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

すべて更新 :

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

最初のバーのみ追加:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

すべて追加 入る:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

すべての更新:

db.col.update( { "カウント" : { $gt : 15 } } , { $inc : { "カウント" : 1} },false,true );

最初のレコードのみを更新します:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

PHP中国語ウェブサイト