2017-08-26 8 views
-2

Que。交換してくださいその_id 1.MongoDB Doc全体をid 1に置き換えます。

db.emp.saveある文書全体({_id:1})

は、それが正しいかではありませんか?

+0

オブジェクトのクエリになります選ぶ私たちは{upsert: true}とオプションに渡されたマージものと交換してください? – nullpointer

+0

_idが1である文書全体を置き換えます。 –

+0

置き換えるとき、既存の文書を削除し、新しい文書で更新します。その文書について質問していた。 – nullpointer

答えて

0

あなたはおそらくreplaceOne mongodbの方法を探しています。ドキュメントのフィルタを交換する場合は、最初のパラメータと第二には、それに代わる文書である -

db.restaurant.replaceOne(
     { "_id" : "1", "somfield" : "Old value" }, 
     { "_id" : "1", "somfield" : "New value", "additional" : "addedField" } 
    ); 

注:これは、として使用することができます。シェルの中

+1

ありがとう非常にたくさん... –

0

レッツ・ジャンプとちょうど今、私たちは簡単な手順にロジックを引き離す場合save方法

> db.test.save 
function (obj, opts) { 
    if (obj == null) 
     throw Error("can't save a null"); 

    if (typeof(obj) == "number" || typeof(obj) == "string") 
     throw Error("can't save a number or string"); 

    if (typeof(obj._id) == "undefined") { 
     obj._id = new ObjectId(); 
     return this.insert(obj, opts); 
    } else { 
     return this.update({_id: obj._id}, obj, Object.merge({upsert: true}, opts)); 
    } 
} 
> 

を見てみましょう。

ませ_idがオブジェクトに存在しない

  • 新しいのObjectId
  • を作成

_idを保存するために渡されたオプションを使用して、コレクションに

  • コールinsertオブジェクトには、フィールドを添付の上に存在しますオブジェクト

    • ので{a: 1, b: 2 } + {upsert: true}{a: 1, b: 2, upsert: true }
    • コールマージされたオプションを使用して、コレクションの更新とも_id
  • 関連する問題