Merge pull request #20 from cloudant/43531-mango-text-sort-desc
Fix text sort desc
diff --git a/src/mango_cursor_text.erl b/src/mango_cursor_text.erl
index 7c1b992..c774c82 100644
--- a/src/mango_cursor_text.erl
+++ b/src/mango_cursor_text.erl
@@ -204,12 +204,18 @@
sort_query(Opts, Selector) ->
{sort, {Sort}} = lists:keyfind(sort, 1, Opts),
SortList = lists:map(fun(SortField) ->
- RawSortField = case SortField of
- {Field, <<"asc">>} -> Field;
- {Field, <<"desc">>} -> <<"-", Field/binary>>;
- Field when is_binary(Field) -> Field
+ {Dir, RawSortField} = case SortField of
+ {Field, <<"asc">>} -> {asc, Field};
+ {Field, <<"desc">>} -> {desc, Field};
+ Field when is_binary(Field) -> {asc, Field}
end,
- mango_selector_text:append_sort_type(RawSortField, Selector)
+ SField = mango_selector_text:append_sort_type(RawSortField, Selector),
+ case Dir of
+ asc ->
+ SField;
+ desc ->
+ <<"-", SField/binary>>
+ end
end, Sort),
case SortList of
[] -> relevance;
diff --git a/test/09-text-sort-test.py b/test/09-text-sort-test.py
index d2bd454..b77ca9a 100644
--- a/test/09-text-sort-test.py
+++ b/test/09-text-sort-test.py
@@ -21,6 +21,17 @@
assert len(docs) == 15
assert docs[0]["age"] == 22
+ def test_number_sort_desc(self):
+ q = {"age": {"$gt": 0}}
+ docs = self.db.find(q, sort=[{"age": "desc"}])
+ assert len(docs) == 15
+ assert docs[0]["age"] == 79
+
+ q = {"manager": True}
+ docs = self.db.find(q, sort=[{"age:number": "desc"}])
+ assert len(docs) == 11
+ assert docs[0]["age"] == 79
+
def test_string_sort(self):
q = {"email": {"$gt": None}}
docs = self.db.find(q, sort=["email:string"])