mirror of
https://github.com/pocoproject/poco.git
synced 2025-03-25 16:13:42 +01:00
Add more samples
This commit is contained in:
parent
ee360d307c
commit
c52dcc1c2f
@ -36,6 +36,7 @@
|
||||
#include "Poco/MongoDB/Connection.h"
|
||||
#include "Poco/MongoDB/Database.h"
|
||||
#include "Poco/MongoDB/Cursor.h"
|
||||
#include "Poco/MongoDB/Array.h"
|
||||
|
||||
// INSERT INTO players
|
||||
// VALUES( "Messi", "Lionel", 1987)
|
||||
@ -44,35 +45,113 @@ void sample1(Poco::MongoDB::Connection& connection)
|
||||
std::cout << "*** SAMPLE 1 ***" << std::endl;
|
||||
|
||||
Poco::MongoDB::Database db("sample");
|
||||
Poco::SharedPtr<Poco::MongoDB::InsertRequest> insertUserRequest = db.createInsertRequest("players");
|
||||
Poco::SharedPtr<Poco::MongoDB::InsertRequest> insertPlayerRequest = db.createInsertRequest("players");
|
||||
|
||||
// With one insert request, we can add multiple documents
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Valdes")
|
||||
.add("firstname", "Victor")
|
||||
.add("birthyear", 1982);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Alves")
|
||||
.add("firstname", "Daniel")
|
||||
.add("birthyear", 1983);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Bartra")
|
||||
.add("firstname", "Marc")
|
||||
.add("birthyear", 1991);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Alba")
|
||||
.add("firstname", "Jordi")
|
||||
.add("birthyear", 1989);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Montoya")
|
||||
.add("firstname", "Martin")
|
||||
.add("birthyear", 1991);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Abidal")
|
||||
.add("firstname", "Eric")
|
||||
.add("birthyear", 1979);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Fontas")
|
||||
.add("firstname", "Andreu")
|
||||
.add("birthyear", 1989);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Messi")
|
||||
.add("firstname", "Lionel")
|
||||
.add("birthyear", 1987);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Puyol")
|
||||
.add("firstname", "Carles")
|
||||
.add("birthyear", 1978);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Piqué")
|
||||
.add("firstname", "Gerard")
|
||||
.add("birthyear", 1987);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Muniesa")
|
||||
.add("firstname", "Marc")
|
||||
.add("birthyear", 1992);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Fabrégas")
|
||||
.add("firstname", "Cesc")
|
||||
.add("birthyear", 1987);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Hernandez")
|
||||
.add("firstname", "Xavi")
|
||||
.add("birthyear", 1980);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Iniesta")
|
||||
.add("firstname", "Andres")
|
||||
.add("birthyear", 1984);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Alcantara")
|
||||
.add("firstname", "Thiago")
|
||||
.add("birthyear", 1991);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Dos Santos")
|
||||
.add("firstname", "Jonathan")
|
||||
.add("birthyear", 1990);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Mascherano")
|
||||
.add("firstname", "Javier")
|
||||
.add("birthyear", 1984);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Busquets")
|
||||
.add("firstname", "Sergio")
|
||||
.add("birthyear", 1988);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Adriano")
|
||||
.add("firstname", "")
|
||||
.add("birthyear", 1984);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Song")
|
||||
.add("firstname", "Alex")
|
||||
.add("birthyear", 1987);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Villa")
|
||||
.add("firstname", "David")
|
||||
.add("birthyear", 1981);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Sanchez")
|
||||
.add("firstname", "Alexis")
|
||||
.add("birthyear", 1988);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Pedro")
|
||||
.add("firstname", "")
|
||||
.add("birthyear", 1987);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Cuenca")
|
||||
.add("firstname", "Isaac")
|
||||
.add("birthyear", 1991);
|
||||
insertPlayerRequest->addNewDocument()
|
||||
.add("lastname", "Tello")
|
||||
.add("firstname", "Cristian")
|
||||
.add("birthyear", 1991);
|
||||
|
||||
Poco::MongoDB::Document::Ptr player = new Poco::MongoDB::Document();
|
||||
player->add("lastname", "Messi");
|
||||
player->add("firstname", "Lionel");
|
||||
player->add("birthyear", 1987);
|
||||
insertUserRequest->documents().push_back(player);
|
||||
std::cout << insertPlayerRequest->documents().size() << std::endl;
|
||||
|
||||
player = new Poco::MongoDB::Document();
|
||||
player->add("lastname", "Valdes");
|
||||
player->add("firstname", "Victor");
|
||||
player->add("birthyear", 1982);
|
||||
insertUserRequest->documents().push_back(player);
|
||||
|
||||
player = new Poco::MongoDB::Document();
|
||||
player->add("lastname", "Puyol");
|
||||
player->add("firstname", "Carles");
|
||||
player->add("birthyear", 1978);
|
||||
insertUserRequest->documents().push_back(player);
|
||||
|
||||
player = new Poco::MongoDB::Document();
|
||||
player->add("lastname", "Piqué");
|
||||
player->add("firstname", "Gerard");
|
||||
player->add("birthyear", 1987);
|
||||
insertUserRequest->documents().push_back(player);
|
||||
|
||||
connection.sendRequest(*insertUserRequest);
|
||||
connection.sendRequest(*insertPlayerRequest);
|
||||
std::string lastError = db.getLastError(connection);
|
||||
if ( !lastError.empty() )
|
||||
{
|
||||
@ -250,9 +329,92 @@ void sample7(Poco::MongoDB::Connection& connection)
|
||||
}
|
||||
|
||||
|
||||
// SELECT * FROM players LIMIT 10 SKIP 20
|
||||
void sample8(Poco::MongoDB::Connection& connection)
|
||||
{
|
||||
std::cout << "*** SAMPLE 8 ***" << std::endl;
|
||||
|
||||
Poco::MongoDB::Cursor cursor("sample", "players");
|
||||
cursor.query().setNumberToReturn(10);
|
||||
cursor.query().setNumberToSkip(20);
|
||||
Poco::MongoDB::ResponseMessage& response = cursor.next(connection);
|
||||
while(1)
|
||||
{
|
||||
for(Poco::MongoDB::Document::Vector::const_iterator it = response.documents().begin(); it != response.documents().end(); ++it)
|
||||
{
|
||||
std::cout << (*it)->get<std::string>("lastname") << ' ' << (*it)->get<std::string>("firstname") << " (" << (*it)->get<int>("birthyear") << ')' << std::endl;
|
||||
}
|
||||
|
||||
// When the cursorID is 0, there are no documents left, so break out ...
|
||||
if ( response.cursorID() == 0 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Get the next bunch of documents
|
||||
response = cursor.next(connection);
|
||||
};
|
||||
}
|
||||
|
||||
// SELECT * FROM players LIMIT 1
|
||||
void sample9(Poco::MongoDB::Connection& connection)
|
||||
{
|
||||
std::cout << "*** SAMPLE 9 ***" << std::endl;
|
||||
|
||||
// QueryRequest can be used directly
|
||||
Poco::MongoDB::QueryRequest query("sample.players");
|
||||
query.setNumberToReturn(1);
|
||||
Poco::MongoDB::ResponseMessage response;
|
||||
connection.sendRequest(query, response);
|
||||
if ( response.hasDocuments() )
|
||||
{
|
||||
std::cout << response.documents()[0]->toString(2);
|
||||
}
|
||||
|
||||
// QueryRequest can be created using the Database class
|
||||
Poco::MongoDB::Database db("sample");
|
||||
Poco::SharedPtr<Poco::MongoDB::QueryRequest> queryPtr = db.createQueryRequest("players");
|
||||
queryPtr->setNumberToReturn(1);
|
||||
connection.sendRequest(*queryPtr, response);
|
||||
if ( response.hasDocuments() )
|
||||
{
|
||||
std::cout << response.documents()[0]->toString(2);
|
||||
}
|
||||
}
|
||||
|
||||
// SELECT DISTINCT birthyear FROM players WHERE birthyear > 1980
|
||||
void sample10(Poco::MongoDB::Connection& connection)
|
||||
{
|
||||
std::cout << "*** SAMPLE 10 ***" << std::endl;
|
||||
|
||||
Poco::MongoDB::Database db("sample");
|
||||
Poco::SharedPtr<Poco::MongoDB::QueryRequest> command = db.createCommand();
|
||||
std::cout << command->fullCollectionName() << std::endl;
|
||||
|
||||
command->selector()
|
||||
.add("distinct", "players")
|
||||
.add("key", "birthyear")
|
||||
.addNewDocument("query")
|
||||
.addNewDocument("birthyear")
|
||||
.add("$gt", 1980);
|
||||
|
||||
Poco::MongoDB::ResponseMessage response;
|
||||
connection.sendRequest(*command, response);
|
||||
if ( response.hasDocuments() )
|
||||
{
|
||||
Poco::MongoDB::Array::Ptr values = response.documents()[0]->get<Poco::MongoDB::Array::Ptr>("values");
|
||||
for(int i = 0; i < values->size(); ++i )
|
||||
{
|
||||
std::cout << values->get<int>(i) << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
Poco::MongoDB::Connection connection("localhost", 27017);
|
||||
|
||||
sample1(connection);
|
||||
sample2(connection);
|
||||
sample3(connection);
|
||||
@ -260,6 +422,9 @@ int main(int argc, char** argv)
|
||||
sample5(connection);
|
||||
sample6(connection);
|
||||
sample7(connection);
|
||||
sample8(connection);
|
||||
sample9(connection);
|
||||
sample10(connection);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user