如何使用C++驱动程序在 mongodb 中设置 TTL

How to set TTL in mongodb with C++ driver

本文关键字:设置 TTL mongodb 何使用 C++ 驱动程序      更新时间:2023-10-16

我想在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?

谢谢。

因为我仍然找不到 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

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