В настоящее время в mongodb невозможно выполнить сортировку на основе определенных пользователем критериев по нескольким столбцам. здесь функция должна была бы возвращать bump_date
, если она установлена, иначе возвращать created
Либо вам придется использовать код на стороне сервера или на стороне клиента, как указано здесь:
Монго комплексная сортировка?
или, если вы хотите остаться с базовыми запросами и сортировкой, вы должны:
создает ключ bump_date
, эквивалентный created
каждый раз, когда создается новая запись. Это будет , а не излишним расходом данных, так как вы можете ожидать, что каждая ваша тема будет периодически обновляться, поэтому в конечном итоге будет добавлено поле bump_date
. Поэтому добавьте его с самого начала.
При каждом появлении статьи обновите поле bump_date
.
Ваши примеры документов будут выглядеть следующим образом:
{
"text" : "test 1",
"created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)",
"bump_date" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)"
},
{
"text" : "test 2",
"created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)",
"bump_date" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)"
},
{
"text" : "test 3",
"created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)",
"bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)"
}
Вы должны ensureIndex
в поле bump_date. Теперь вы можете легко запрашивать необходимые данные.
db.topics.find().sort({ bump_date: 1 })