gpt4 book ai didi

c++ - 如何使用 C++ 驱动程序将两个客户端 IP 连接到同一个 mongodb

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:28 25 4
gpt4 key购买 nike

我正在尝试使用 mongo C++ 驱动程序创建一个客户端来连接到数据库。我成功地测试了本地主机的客户端。我使用的代码如下。

现在我想将数据库和客户端放在不同的机器上,例如 IP 10.1.2.56 上的客户端和 IP 10.1.2.57 上的 mongodb

我应该更改代码以实现该目标。我试着换行

c.connect("localhost"); //"192.168.58.1");

 c.connect("10.1.2.57"); //"192.168.58.1");

但是这样不行错误显示“无法连接到服务器 10.1.2.57:27017”我尝试 ping IP 10.1.2.57,它也给了我响应。

#include <iostream>
#include "mongo/client/dbclient.h"

// g++ src/mongo/client/examples/tutorial.cpp -pthread -Isrc -Isrc/mongo -lmongoclient -lboost_thread-mt -lboost_system -lboost_filesystem -L[path to libmongoclient.a] -o tutorial
//g++ tutorial.cpp -L[mongo directory] -L/opt/local/lib -lmongoclient -lboost_thread-mt -lboost_filesystem -lboost_system -I/opt/local/include -o tutorial

using namespace mongo;

void printIfAge(DBClientConnection& c, int age) {
auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", QUERY( "age" << age ).sort("name") );
while( cursor->more() ) {
BSONObj p = cursor->next();
cout << p.getStringField("name") << endl;
}
}

void run() {
DBClientConnection c;
c.connect("localhost"); //"192.168.58.1");
cout << "connected ok" << endl;
BSONObj p = BSON( "name" << "Joe" << "age" << 33 );
c.insert("tutorial.persons", p);
p = BSON( "name" << "Jane" << "age" << 40 );
c.insert("tutorial.persons", p);
p = BSON( "name" << "Abe" << "age" << 33 );
c.insert("tutorial.persons", p);
p = BSON( "name" << "Methuselah" << "age" << BSONNULL);
c.insert("tutorial.persons", p);
p = BSON( "name" << "Samantha" << "age" << 21 << "city" << "Los Angeles" << "state" << "CA" );
c.insert("tutorial.persons", p);

c.ensureIndex("tutorial.persons", fromjson("{age:1}"));

cout << "count:" << c.count("tutorial.persons") << endl;

auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", BSONObj());
while( cursor->more() ) {
cout << cursor->next().toString() << endl;
}

cout << "\nprintifage:\n";
printIfAge(c, 33);
}

int main() {
try {
run();
}
catch( DBException &e ) {
cout << "caught " << e.what() << endl;
}
return 0;
}

最佳答案

我找到了上面问题的答案

早些时候 mongod 运行在 Mongodb 服务器端定义的端口和路径上

所以我通过以下命令停止了 Mongodb

$ sudo stop mongodb

然后通过以下命令再次使用默认定义的路径启动服务器

$ sudo mongod --dbpath /data/db --port 27017 

然后在 c++ 中尝试上面的代码,这次它连接到远程服务器。

关于c++ - 如何使用 C++ 驱动程序将两个客户端 IP 连接到同一个 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com