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)
我已经尝试了一切我能想到的调用参数与建议的候选项匹配,但只能成功生成不同的错误。 请注意,注释掉的查询都可以正常工作。令人沮丧。
提前感谢任何见解。
答案 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);