Just a tiny tip if you ever find yourself in the tricky situation of trying to sort by a stringified date in Couchbase.
Say that you have a document that looks like this:
{
"id": "superhero_1",
"created": "2018-12-28T15:53:00+01:00",
"name": "Clark Kent",
"alias": "Superman",
"strengths": [
"laser eyes",
"flying"
],
"weaknesses": [
"cryptonite"
]
}
The created
field is saved with a ISO 8601 Notation. In couchbase it is hard to sort by. It's better to convert this to milliseconds using Javascript with views when querying the dataset. You can achieve this with the following query:
function (doc, meta) {
if (doc.created) {
emit(["created", Date.parse(doc.created)], { id: doc.id } );
}
}
This will produce a key value pair that looks something like this:
{
"key": ["created", 1546008780000],
"value": { "id": "superhero_1" }
}
That's it! This format is easier to deal with in terms of sorting and I'm sure it has other applications as well. Hope you found this useful!