diff --git a/MongoDB/include/Poco/MongoDB/Binary.h b/MongoDB/include/Poco/MongoDB/Binary.h index 8bb383323..ea95bfbd0 100644 --- a/MongoDB/include/Poco/MongoDB/Binary.h +++ b/MongoDB/include/Poco/MongoDB/Binary.h @@ -117,6 +117,7 @@ inline void BSONReader::read(Binary::Ptr& to) template<> inline void BSONWriter::write(Binary::Ptr& from) { + _writer << (Poco::Int32) from->buffer().size(); _writer << from->subtype(); _writer.writeRaw((char*) from->buffer().begin(), from->buffer().size()); } diff --git a/MongoDB/include/Poco/MongoDB/Database.h b/MongoDB/include/Poco/MongoDB/Database.h index a6ccff8eb..946df111e 100644 --- a/MongoDB/include/Poco/MongoDB/Database.h +++ b/MongoDB/include/Poco/MongoDB/Database.h @@ -45,7 +45,7 @@ public: virtual ~Database(); /// Destructor - double count(Connection& connection, const std::string& collectionName) const; + int count(Connection& connection, const std::string& collectionName) const; /// Sends a count request for the given collection to MongoDB. When /// the command fails, -1 is returned. diff --git a/MongoDB/src/Database.cpp b/MongoDB/src/Database.cpp index be4b1518c..27186c317 100644 --- a/MongoDB/src/Database.cpp +++ b/MongoDB/src/Database.cpp @@ -32,7 +32,7 @@ Database::~Database() } -double Database::count(Connection& connection, const std::string& collectionName) const +int Database::count(Connection& connection, const std::string& collectionName) const { Poco::SharedPtr countRequest = createCountRequest(collectionName); @@ -42,7 +42,7 @@ double Database::count(Connection& connection, const std::string& collectionName if ( response.documents().size() > 0 ) { Poco::MongoDB::Document::Ptr doc = response.documents()[0]; - return doc->get("n"); + return doc->get("n"); } return -1; diff --git a/MongoDB/testsuite/src/MongoDBTest.cpp b/MongoDB/testsuite/src/MongoDBTest.cpp index 09024c75c..e55418fef 100644 --- a/MongoDB/testsuite/src/MongoDBTest.cpp +++ b/MongoDB/testsuite/src/MongoDBTest.cpp @@ -221,7 +221,8 @@ void MongoDBTest::testCountCommand() if ( response.documents().size() > 0 ) { Poco::MongoDB::Document::Ptr doc = response.documents()[0]; - double count = doc->get("n"); + std::cout << doc->toString() << std::endl; + int count = doc->get("n"); assert(count == 1); } else @@ -248,7 +249,7 @@ void MongoDBTest::testDBCountCommand() if ( response.documents().size() > 0 ) { Poco::MongoDB::Document::Ptr doc = response.documents()[0]; - double count = doc->get("n"); + int count = doc->get("n"); assert(count == 1); } else @@ -267,7 +268,7 @@ void MongoDBTest::testDBCount2Command() } Poco::MongoDB::Database db("team"); - double count = db.count(_mongo, "players"); + int count = db.count(_mongo, "players"); assert(count == 1); } @@ -305,7 +306,8 @@ void MongoDBTest::testCursorRequest() } _mongo.sendRequest(*insertRequest); - double count = db.count(_mongo, "numbers"); + int count = db.count(_mongo, "numbers"); + std::cout << "count= " << count << std::endl; assert(count == 10000); Poco::MongoDB::Cursor cursor("team", "numbers"); @@ -390,7 +392,7 @@ void MongoDBTest::testConnectionPool() if ( response.documents().size() > 0 ) { Poco::MongoDB::Document::Ptr doc = response.documents()[0]; - double count = doc->get("n"); + int count = doc->get("n"); assert(count == 1); } else