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

标签 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设置有问题还是有其他方法?

谢谢。

最佳答案

因为我还是找不到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

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

关于c++ - 如何使用 C++ 驱动程序在 mongodb 中设置 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793513/

相关文章:

javascript - Meteor:如何将项目推送到用户集合并创建列表或数组,而不是用新项目替换每个项目?

node.js - 如何在mongodb的node.js应用程序中包含和使用connection.js文件

python - 如何使用 python 在现有的 mongoDB 文档中添加具有特定数据类型(列表、对象)的字段

c++ - 是否有任何简单的方法(黑客)来公开由前向声明隐藏的 header ?

c++ - 为什么 Visual Studio 找不到我的 DLL?

c++ - 如何获取工作站所属的 Active Directory 域的全名

mongodb - 如何告诉 MongoSource(使用 Kafka Connect)序列化什么 Key

ruby-on-rails - 具有不同 key 的 Mongoid upsert

C++ 模板参数作为函数调用名称

c++ - C++20 范围的切片 View