Как вставить документ, используя класс DBClientBase в драйвере MongoDB C ++? - PullRequest
0 голосов
/ 10 января 2012

Вместо использования класса DBClientConnection, я использую класс DBClientBase.Я успешно могу подключиться к БД, но не могу вставить документ.

Вот как выглядит мой код:

DBClientBase *conn = NULL;
string err_msg;
ConnectionString cs = ConnectionString::parse(connString, err_msg);

if (!cs.isValid()) {
 throw "bad: " + err_msg;
}

try {
conn = cs.connect(err_msg);
} catch (DBException &e) {
 cout << "caught " << err_msg << endl;
return 1;
}

if (!conn){
   cout<<"Unable to connect to DB"<<endl;
   return 1;
}

BSONObjBuilder b;
b.append("name", "Joe");
b.append("age", 33);
BSONObj p = b.obj();

conn.insert("db.coll",p,0);

компилятор выдает ошибку request for member ‘insert’ in ‘conn’, which is of non-class type ‘mongo::DBClientBase*’

Где-нибудь есть пример использования класса DBClientBase для вставки документов?

Кроме того, я не могу найти, как использовать флаги в virtual void insert (const string &ns, BSONObj obj, int flags=0), как упоминалось здесь

1 Ответ

1 голос
/ 10 января 2012

conn - это указатель на DBClientBase, вместо него следует использовать ->:

conn->insert("db.coll", p, 0);
...