Mongoid сортировка значений NULL до последнего + Ruby - PullRequest
0 голосов
/ 10 мая 2018

Мы используем mongoid gem в нашем приложении.У нас есть набор записей со значениями nil, например, nil, nil, nil,3,4,1.Мы хотим выводить как 1,3,4,nil,nil,nil.

Мы используем нумерацию страниц, которая использует Mongoid::Criteria объект.Следовательно, мы не можем написать два запроса, а затем использовать concat, поскольку он преобразуется в массив, и ему необходим объект Mongoid::Criteria.

Я попытался выполнить два запроса с nil, но не с нулевым значением, а затем использовал метод mergeобъединить их, но это привело к добавлению этих двух условий и к нулю записей.

Есть ли способ использовать mongoid gem, чтобы выдвинуть значения nil до конца и не сделать значения nil отсортированными вв порядке возрастания в начале?

Также

pipeline = [{"$match": {"_type": "Category"}},{"$project": {"sort_index": 1,"uri_id": 1, "nlt": { "$ifNull": [ "$sort_index", Time.now]}}},{"$sort": { "nlt": 1}}]

Category.collection.aggregate(pipeline)

Это дает Mongo::Collection::View::Aggregation, но мне нужно Mongoid::Criteria для нумерации страниц.

Если мы используем раздел, это вернетобъект массива, но нам нужен объект Mongoid :: Criteria

...