私は MongoDb の c++ ドライバーを使用しており、mongo::Query クラスと JSON クエリを文字列として組み合わせようとしています。
私の例では、q1、q2、q3 を結合しようとしています。q3 を mongo::fromjson(q3); に変換できます。最後の結合の前に不要なエラーをキャッチするための try catch では、それが最善の方法であるかどうかはわかりません。
これまでのところ、私の唯一の試みは、BSON_ARRAY を使用して個別のセクションを結合することですが、それでも私が望むようにはなりません (ただし、安定していません)。
///The output im trying to achieve is:
// {a : 1,b : 2, c : 3}
const mongo::Query q1 = QUERY("a" << 1);
const mongo::Query q2 = QUERY("b" << 2);
const std::string q3 = "{c : 3}";
// Attempt 1. I know it does not work.
mongo::Query qAll = BSON_ARRAY(q1.toString() << q2.toString());
std::cout << q1.toString() << std::endl;
// Outputs { a: 1 } as expected
std::cout << q2.toString() << std::endl;
// Outputs { b: 2 } as expected
std::cout << qAll.toString() << std::endl;
// Outputs { 0: "{ a: 1 }", 1: "{ b: 2 }" }, expected but wrong.