Написать сложный запрос в Couchbase с полем даты?

Я не очень разбираюсь в БД, и здесь для меня проблема связана с запросом 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. Короче говоря, выберите все, чьи (Current Timestamp - 2017-06-30 18:40:12) >= 90 дней.

Я проверил на портале Couchbase, что они разница в дате поддержки, как показано ниже

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");

person Satyaprakash Nayak    schedule 03.07.2017    source источник
comment
Я разместил этот вопрос на форуме Couchbase и получил ответ. Перейдите по этой ссылке.   -  person Satyaprakash Nayak    schedule 11.07.2017


Ответы (1)


см. https://developer.couchbase.com/documentation/server/4.6/sdk/java/n1ql-queries-with-sdk.html для использования DSL с N1QL. В общем, у вас есть два пути:

  1. передать строку запроса SELECT методу query().

  2. или используйте функции даты (см. справочник по API com.couchbase.client.java.query.dsl.functions) после DSL-запроса, как вы упомянули. На самом деле, вы можете указать поля проекции для метода select() вместо *

person Prasad Varakur    schedule 11.07.2017
comment
Да, я получил ответ. Спасибо - person Satyaprakash Nayak; 11.07.2017