我们正在尝试使用具有第7层SecureSpan网关(SSG)的MongoDB。第七层为我们提供了一种称为自定义断言的软件,它提供了一种SSG和MongoDB之间的桥梁。这样,我们就可以用查询字符串来配置它,然后我们就可以调用它,它就会执行查询。
我们还希望使用TTL索引特性,因此我们希望为每个文档/行存储一个字段CREATED_FOR_TTL,该字段将包含日期/时间戳,并将被配置为一个MongoDB索引。
SSG具有这些称为“上下文变量”或CV的东西,并且MongoDB断言允许使用CV作为查询字符串,即,我们可以在CV中构造查询字符串,然后使用构造的CV调用自定义断言。
然而,我们遇到了一个问题,因为虽然SSG允许将CV用于查询字符串,但它不允许将CV用于MongoDB函数,尤其是,以下内容在查询字符串中不起作用:
CREATED_FOR_TTL : INFODate()
SSG确实有允许我们获取日期/时间戳并将其转换为毫秒值的函数。
然而,当我们这样做的时候:
CREATED_FOR_TTL:,例如:
CREATED_FOR_TTL: 1234567890...
我们在MongoDB中得到的是一个NumberLong(xxxxxx),而这似乎不适用于TTL索引功能。
因此,根据主题,我正在尝试找出是否有任何我们可以(例如)包含整数(即日期/时间戳,以毫秒为单位)的CV,并将其存储到字段中,以便它在MongDB和TTL索引中看起来像ISODate()?
我为这个冗长的问题道歉,但我意识到这可能是一个奇怪的问题,再加上我想提供我们为什么要寻找这个问题的背景。
谢谢,吉姆
发布于 2014-08-22 03:51:56
实际的服务器进程不知道ISODate()是什么。ISODate()是mongo shell中的一个助手。MongoDB存储BSON,并且TTL索引字段必须是BSON date type的。您不需要将查询字符串提交给mongod,而是将包含查询文档的有线协议消息作为BSON发送。因此,真正的问题是,如何对查询进行编码并将BSON发送到MongoDB?通常,人们使用的驱动程序可以处理所有这些事情,但看起来你使用的是其他东西,我完全不熟悉的东西。如果它不支持MongoDB支持您的用例所需的所有BSON类型的完整有线协议/编码,那么您需要修复您与MongoDB之间的通信层。
https://stackoverflow.com/questions/25417655
复制相似问题