gpt4 book ai didi

c++ - 在 MongoDB 中查询字符串的中间部分?

转载 作者:行者123 更新时间:2023-11-30 02:56:47 28 4
gpt4 key购买 nike

我需要对包含时间戳字符串(“YYYYMMDD:HH:MM:SS.SSSS”)的集合运行查询。我想找到所有小时小于 9 小时和大于 14 小时的文档。SQL 提供了 MID() 函数,但我找不到等效的函数。如何在 C++ 中运行此查询?如果您不知道如何在 C++ 中但在 mongo shell 中让我知道,我可以将它转换为 C++。

更新使用下面 JohnnyHK 的建议,我尝试了:

BSONObj queryafter = BSONObjBuilder().appendRegex("date", "........:0[0-8]").obj();
BSONObj queryafter = BSONObjBuilder().appendRegex("date", "........:[17-23]").obj();
c.update(dbcol, Query(querybefore), BSON("$set"<<BSON("noise"<<"true")), false, true);

它编译了但没有正确过滤。

最佳答案

它不是很优雅,但你可以在 shell 中使用正则表达式来做到这一点:

db.test.find({ts: /....:..:..:0[5-8]/})

在 C++ 驱动程序中,您将使用类似以下内容构建查询对象:

BSONObj query = BSONObjBuilder().appendRegex("ts", "....:..:..:0[5-8]").obj(); 

更新

对于您的新要求,它会涉及更多一些,但仍然可行:

BSONObjBuilder().appendRegex("ts", "^........:(0[0-8]|1[5-9]|2[0-3]):..:").obj();

关于c++ - 在 MongoDB 中查询字符串的中间部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com