I have a unique index in MongoDB to avoid duplicates.
I am trying to convert simple code from java to c ++ here is my code to insert documents into MongoDB. codes are working perfectly but when I try to insert same documents application stop working.
mongocxx::client conn{ mongocxx::uri{ "mongodb://localhost:27017" } };
mongocxx::write_concern writeConcern;
writeConcern.acknowledge_level(mongocxx::write_concern::level(1));
QFile inputFile(path);
if (inputFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inputFile);
while (!in.atEnd())
{
bsoncxx::builder::stream::document document{};
auto collection = conn["TestDB"]["fdevices"];
QString line = in.readLine();
std::string utf8_text = line.toUtf8().constData();
document << "Data" << utf8_text;
collection.insert_one(document.view());
}
inputFile.close();
}
here is the code that I used in java. in java, i can simply ignore duplicates by using mongoClient.setWriteConcern(new WriteConcern(0, 10)); and continue my loop to next document.
MongoClient mongoClient = new MongoClient(asList( new ServerAddress(host+":"+port)),
singletonList(MongoCredential.createScramSha1Credential(uname.getText(),
MongoClientOptions.builder().serverSelectionTimeout(2000)
.build());
mongoClient.setWriteConcern(new WriteConcern(0, 10));
DB db = mongoClient.getDB(dblist.getSelectedValue().toString());
DBCollection bookCollection = db.getCollection(collectionss.getSelectedValue().toString());
for (int i = 0; i <sixe; i++) {
server.prolab.setText("Uploaded files: "+i+" Total files: "+sixe);
BasicDBObject doc = new BasicDBObject("Data",dataList.getModel().getElementAt(i));
bookCollection.insert(doc);
}
you are not defining writeConcern method correctly, try these codes.
mongocxx::client conn{ mongocxx::uri{ "mongodb://localhost:27017" } };
bsoncxx::builder::stream::document document{};
mongocxx::write_concern writeConcern;
writeConcern.acknowledge_level(mongocxx::write_concern::level::k_unacknowledged);
std::chrono::milliseconds timeout = std::chrono::milliseconds(5000);
auto collection = conn["TestDB"]["fdevices"];
collection.write_concern(writeConcern);
conn.write_concern(writeConcern);
QFile inputFile(path);
if (inputFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inputFile);
while (!in.atEnd())
{
QString line = in.readLine();
std::string utf8_text = line.toUtf8().constData();
document << "Data" << utf8_text;
collection.insert_one(document.view());
}
inputFile.close();
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments