我是MongoDB的新手,并且在很长一段时间内一直在努力使用java apis获取多种排序。
所以我的数据是:
{
"id":1,
"name":"sam",
"timestamp":"2015-10-24 19:50:53"
}
我正在尝试根据时间戳获取最新的10条记录。一旦我有了,我想根据名称和时间戳对结果进行排序。
这给了我最近10条记录的正确排序: .sort(新文档(“timestamp”, - 1))。limit(10)
但是如果我添加更多排序参数,它会对整个结果集进行排序。
我正在尝试获取最近的10条记录,一旦我得到结果,我想按时间戳按升序排序,然后按名称排序。如果是平局。
答案 0 :(得分:0)
看来,你要做的事情是不可能的。如mongo docs中所述,sort总是在limit之前执行。所以做一些像
这样的事情.sort({timestamp: -1}).limit(10).sort({timestamp: 1, name: 1})
只会导致第二种排序覆盖第一种排序。 这相当于
sort({timestamp: 1, name: 1}).limit(10)
所以我认为,你最好的选择是从Mongo获取10条最新记录,然后在Java代码中再次对它们进行排序,以便你需要(时间戳升序和名称升序)。