web-dev-qa-db-ja.com

Mongodb更新条件付きセット演算子(挿入の場合のみ$ set)

$ set whenが挿入が行われたときにのみ機能するMongoの更新に何かありますか?.

たとえば、次のフィールドを持つコレクションがあります。

  1. Username
  2. FirstOccurrence
  3. カウント

このような更新操作を実行したいのですが。

coll.update{ q: {username} ,u: {$set:{FirstOccurrence},$inc:count} }

ただし、条件は、UserNameが既に存在する場合、$ setを実行せず、カウントをインクリメントするだけです。

Javaドライバ2.13.0でMongo 2.6.4を実行しています。

よろしく

3
viren

条件付きの$ set更新操作で機能します

http://docs.mongodb.org/manual/reference/operator/update/setOnInsert/

db.products.update(
  { _id: 1 },
  {
    $set: { item: "Apple" },
    $setOnInsert: { defaultQty: 100 }
  },
  {upsert: true }
)

ここで、setOnInsertは、新しいレコードが挿入されたときにのみdefaultQtyを設定します。 $ setと$ setOnInsertの両方を一緒に使用できます。

5
viren