に挿入します。のMongoDB:1 [原子]文でモンゴでこれを行うことができますどのように重複するキー更新
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
このステートメントが初めて実行されると、それはX値を設定しますが、その後、それだけ更新しますY値。
MyUniqueKeyのみが一意のキーの一部であり、重複を検索する必要があります。
に挿入します。のMongoDB:1 [原子]文でモンゴでこれを行うことができますどのように重複するキー更新
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
このステートメントが初めて実行されると、それはX値を設定しますが、その後、それだけ更新しますY値。
MyUniqueKeyのみが一意のキーの一部であり、重複を検索する必要があります。
私はこの質問をmongodbユーザグループに尋ねましたが、答えは不可能で、これは公開issueです。
Update
コマンドでupsert optionを探しています。ドキュメントはここで十分でなければなりません。
例を挙げてください。私はすでに多くのオプションの組み合わせを試していますが、挿入時に設定するフィールドは選択できませんが、更新時には除外されます。 –
フィールドには最初の挿入時にのみ設定するのが好きですが、更新時には触れられません。 –
'update'部分の一部ではなく、更新の' query'部分の 'Y'部分を作らなければなりません。 –
から私が代わりに "mytableは" の "MyCollection" それを呼ぶだろう。 あなたは、次の操作を行うことができますdb.mycollection.update( { MyUniqueKey: "?" }, { $set: {"y": "?"}, $setOnInsert: { MyUniqueKey: "?", "x": "?", }, { upsert: true } )
基本的には$セットは、文書が存在しない場合を除いて、常に動作します。 $ setOnInsertが実行されます。
この問題はMongoDB 2.4で解決されており、['$ setOnInsert'](http://docs.mongodb.org/manual/reference/operator/setOnInsert /)。 – str