MongoDB C ++驱动程序查询错误

时间:2014-06-13 11:46:43

标签: c++ mongodb

MongoDB C ++驱动程序正在努力。我有一个工作驱动程序,可以正常处理所有查询,除了下面的查询,这将停止程序编译。

代码应该根据MongoDB文档在这里工作: http://docs.mongodb.org/ecosystem/drivers/cpp-to-sql-to-mongo-shell/

目的是只选择集合中所有文档的“名称”字段。

using namespace std;
using namespace mongo;

DBClientConnection c;
c.connect("localhost");

auto_ptr<DBClientCursor> cursor = c.query("db.coll", Query(), 0, 0, BSON("name" << 1));

//auto_ptr<DBClientCursor> cursor = c.query("db.coll", Query().sort("_id", -1), 0, 0);
//auto_ptr<DBClientCursor> cursor = c.query("db.coll", Query());
//auto_ptr<DBClientCursor> cursor = c.query("db.coll", QUERY("type" << "blog"));

但是,我收到以下错误:

error: no matching function for call to ‘mongo::DBClientConnection::query(const char [19], mongo::Query, int, int, mongo::BSONObj)’
mongodriver/include/mongo/client/dbclientinterface.h:1274: note: candidates are:       virtual std::auto_ptr<mongo::DBClientCursor> mongo::DBClientConnection::query(const std::string&, mongo::Query, int, int, const mongo::BSONObj*, int, int)

我已经尝试了一切我能想到的调用参数与建议的候选项匹配,但只能成功生成不同的错误。 请注意,注释掉的查询都可以正常工作。令人沮丧。

提前感谢任何见解。

1 个答案:

答案 0 :(得分:1)

@mjhall,

我相信你指出所提到的查询不起作用是正确的。 c.query()需要 BSONObj * ,而示例正在传递 BSONObj 。你可以尝试一下,看看它是否适合你?

DBClientConnection c;
c.connect("localhost");

BSONObj b = BSON("name" << 1);
auto_ptr<DBClientCursor> cursor = c.query("db.coll", Query(), 0, 0, &b);