如何使用C ++驱动程序

时间:2015-04-22 09:40:11

标签: c++ mongodb

我想在Linux中用C ++进程设置TTL索引。

但我发现ensureIndex已被删除。 (https://github.com/mongodb/mongo-cxx-driver/pull/106

createIndex的参数似乎只有BSONObj可以输入。

我试过了:

mongo::DBClientConnection mConnection;
mConnection.connect("localhost");
mongo::BSONObj bObj = BSON( "mongo_date"<< 1 << "expireAfterSeconds" << 10);
mConnection.createIndex("Test.Data",bObj)

但结果是:

  

db.system.indexes.find()

{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "Test.Data" }

{ "v" : 1, "key" : { "mongo_date" : 1, "expireAfterSeconds" : 10 }, "name" : "mongo_date_1_expireAfterSeconds_10", "ns" : "Test.Data" }

设置TTL有什么问题或其他方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

因为我仍然无法在C中找到该方法,所以我暂时使用了一个愚蠢的方法。

我使用shell脚本来创建和运行JavaScript

在C代码中:

int expire = 321;
char expir_char[20];
sprintf(expir_char, "%d",expire);
char temp_char[30] = "./runTtlJs.sh ";
strcat(temp_char,expir_char);
system(temp_char);

在runTtlJs.sh中:

echo "db.Data.dropIndex({"mongo_date":1})" > ttl.js
echo "db.Data.ensureIndex({"mongo_date":1}, { expireAfterSeconds: $1 })" >> ttl.js
mongo Test ttl.js

我知道这不是一个好的答案。