我想在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有什么问题或其他方法吗?
感谢。
答案 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
我知道这不是一个好的答案。