2016-04-13 7 views
0

私は$ set $ incをc + mongodbドライバで使う方法を知りました。私はupdateと呼ぶだけで、このようにjsonの文字列全体をdbに更新することができます:_db_conn.update(db_name_str, mongo::Query(key_word), mongo::fromjson(json_str), true);
$ set、$ incオプションを使って部分的に更新する方法はありますか?

私はインターネット上でそれをチェックは、私はJavaで同様のソリューションを見つけたが、私は任意の助けをいただければ幸いです WriteResult result = mongoNsTemplate.getCollection("userStore").update(query.getQueryObject(), new BasicDBObject("$set", dbObject), true, false);

... C++版のドキュメントでそれを見つけることができません。

答えて

0

$ set、$ incなどの操作を使用できます。文書(json_str上記)は、完全な文書の代わりに$ setや$ incのような更新演算子修飾子を持つ文書でなければなりません。だから、json_strのようなものが含まれている場合:_db_conn.update(db_name_str, mongo::Query(key_word), mongo::fromjson(json_str), true);をします呼び出す

string json_str = "{'$set': {'field1': 1}, '$inc': {'field2': 1}}"; 

を:

  • 更新1に最初に一致した文書(または見つからない場合は、新しいものを挿入(アップサートが真である)
  • セットフィールド1
  • 増分フィールド2を1(または見つからない場合は1に設定しますが、数値がない場合はエラーを発生させます)

これはmongoシェルを使用するのと同じです。

関連する問題