запрос / просмотр couchdb на подполе timestamp - PullRequest
1 голос
/ 09 октября 2019

У меня есть документ couchdb .. примерно так (минимально)

{
  "_id": "225136308d6f95611e457c0f02f1b47a769c35e8",
  "_rev": "19-f2affa088d817ec924c6ca03c34ef1bf",
  "communications": [
    {
      "sequenceId": 1,
      "timestamp": "2019-09-18T05:43:10.412Z"
    },
    {
      "sequenceId": 2,
      "timestamp": "2019-09-18T05:48:37.407Z",
    }
}

Я хочу найти все документы с последней отметкой времени старше X, как мне создать представление для этоговидя как метки времени не хранятся как год, месяц, день?

1 Ответ

2 голосов
/ 11 октября 2019

Я не уверен в ваших требованиях, но вы можете попробовать что-то вроде этого

{
  "_id": "_design/sortby",
  "views": {
    "timestamp": {
      "map": "function (doc) {\n  if (doc && doc.communications && Array.isArray(doc.communications)) {\n    doc.communications.forEach(function (communication) {\n      if (communication && communication.timestamp && communication.sequenceId) {\n        var date = new Date(communication.timestamp);\n        emit([date.getFullYear(), date.getMonth(), date.getDate()], communication.sequenceId);\n      }\n    });\n  }\n}"
    }
  },
  "language": "javascript",
  "_rev": "5-12eed6d29b7947eda8caa68be0b17a23"
}

, это создаст представление вида как

{
    "total_rows": 2,
    "offset": 0,
    "rows": [
        {
            "key": [
                2019,
                8,
                18
            ],
            "id": "225136308d6f95611e457c0f02f1b47a769c35e8",
            "value": 1
        },
        {
            "key": [
                2019,
                8,
                18
            ],
            "id": "225136308d6f95611e457c0f02f1b47a769c35e8",
            "value": 2
        }
    ]
}

Вы можете искать по году, месяцу, дата

...