我在db中并不多,这里的挑战是N1QL查询。我的文档如下所示
{
"timestamp": "2017-06-30 18:40:12",
"title": "http://www.sample.com",
"clicks": 0,
"keyword": "7s9HHp",
"expiryDays": 90,
"user": "admin",
"url": "http://www.sample.com",
"ip": "192.12.35.40"
}
现在我想要选择timestamp
和当前时间戳差异大于或等于expiryDays
的所有文档。简而言之,选择所有人(当前时间戳 - 2017-06-30 18:40:12)> = 90天。
我检查了Couchbase portal他们支持日期差异,如下所示
SELECT DATE_DIFF_STR('2016-05-18T03:59:00Z', '2016-05-15 03:59:00Z', 'day') as add_3_days;
但是不知道如何在java中做。我的查询可能类似于下面的
Statement statement = Select.select("*").from("My_Bucket").where("Don't know what to supply here");
答案 0 :(得分:0)
请参考https://developer.couchbase.com/documentation/server/4.6/sdk/java/n1ql-queries-with-sdk.html将DSL与N1QL结合使用。总之,您有两种方式:
将SELECT查询字符串传递给query()方法。
或者,如您所述,在DSL查询之后使用日期函数(请参阅API reference com.couchbase.client.java.query.dsl.functions)。事实上,您可以将投影字段指定为select()方法而不是*