2017-11-18 7 views
0

mongoDBで新しくなっています。
バックアップ用のコレクションがあります。これは、次のデータとドキュメントが含まれていますMongoDBコレクション内の既存の特定のドキュメントを削除せずに更新します。

{ 
    "_id" : ObjectId("59f18942e7798954dc373b67"), 
    "category" : "building", 
}, 
{ 
    "_id" : ObjectId("59f18942e7798954dc373b68"), 
    "category" : "building", 
}, 
{ 
    "_id" : ObjectId("59f18942e7798954dc373b69"), 
    "category" : "tree", 
    "type" : 18, 
}, 
{ 
    "_id" : ObjectId("59f18942e7798954dc373b70"), 
    "category" : "book", 
    "type" : 18, 
} 

そして、例えば、オブジェクトの一部が変更されたと、そのようになった:

{ 
    "_id" : ObjectId("59f18942e7798954dc373b67"), 
    "category" : "building", 
    "size" : 100 
}, 
{ 
    "_id" : ObjectId("59f18942e7798954dc373b68"), 
    "category" : "building", 
    "size" : 400 
}, 
{ 
    "_id" : ObjectId("59f18942e7798954dc373b70"), 
    "category" : "book", 
    "type" : 18, 
    "title" : "New" 
} 

は、だから、私はDBでそれらを更新する必要があります。私が理解したように、ただ置き換えてください。私は 'upsert'と 'multi'の使い方に関するドキュメントを読んだ。しかし、私はそれを実装することはできません。
どうすればいいですか?

+1

何が起こるか、あなたが試したものを私たちに見せて、あなたが立ち往生しているところ。 –

+1

また、ドキュメントを確認してください:https://docs.mongodb.com/php-library/current/tutorial/crud/#update-one-document –

+0

このドキュメントを読んでいます。しかし、私が理解しているように、私は1つの文書だけを置き換えることができますが、私が必要とするものすべて(たとえば、1つのクエリで3つの文書)を置き換えることはできません。私は正しい? –

答えて

0
モンゴでドキュメントを更新するための

基本的な構文は

1. db.collection.update({_id: ObjectId("59f18942e7798954dc373b67")},{$set:{size:100}});

2. db.collection.update({_id: ObjectId("59f18942e7798954dc373b68")},{$set:{size:400}});

3. db.collection.update({_id: ObjectId("59f18942e7798954dc373b70")},{$set:{title:"New"}});

、あなたの質問については

db.collection.update(query,update,options); 

です

EDIT:あなたは1つのコマンドで書き込み操作を実行したい場合は

あなたは、これを試してみることができます。

> db.characters.bulkWrite(
>  [ 
>   { updateOne : 
>    { 
>    "filter" : { _id : ObjectId("59f18942e7798954dc373b67") }, 
>    "update" : { $set : { size : 100 } } 
>    } 
>   }, 
>   { updateOne : 
>    { 
>    "filter" : { _id : ObjectId("59f18942e7798954dc373b68") }, 
>    "update" : { $set : { size : 400 } } 
>    } 
>   }, 
>   { updateOne : 
>    { 
>    "filter" : { _id : ObjectId("59f18942e7798954dc373b68") }, 
>    "update" : { $set: { title: "New"} } 
>    } 
>   }, 
>  ]  
>); 
+0

はい、私はそれを3つのクエリで実装することができますが、それを1つにしたいと思います。手伝って頂けますか? –

+0

O、ありがとう!また、もう一つ質問があります。ドキュメントからわかるように、マルチ置換は新しいmongoDBドライバでは厳密ですか?だから私はPHPの1つのクエリで$プル/ $プッシュを使用することはできません? –

+0

私は知っている通り、同じクエリで両方を使うことはできませんが、わかりません。 また、この回答が役に立った場合は、正しい答えとしてマークしてください。 –

関連する問題