是否可以在MongoDB中定义一个特殊的排序键?

时间:2016-08-24 13:42:01

标签: python mongodb sorting

我有一个MongoDB集合,我希望使用pymongo和flask在网页上显示。我想在网页上一次只显示N,但我不想一次加载整个集,排序,然后显示条目a:(a + N)。

我想做的事情就像是

db.jobs.find().sort({{"status" : KEY, "startTime" : -1})).skip(a).limit(N)

状态中的值将是" UNENDED"," SUCCESS"," FAILED"。我希望能够定义排序顺序。

通常在python中我会做类似的事情:

_JOB_PRIORITIES = {"UNDENDED" : 0, "SUCCESS" : 1, "FAILURE" : 2}
jobs = sorted((job for job in jobs),key=lambda j: _JOB_PRIORITIES.get(j["result"]))

但正如我所说,我宁愿不将所有内容加载到程序中,而是让MongoDB完成所有这些工作。

在MongoDB中是否可以这样做,或者我将不得不定义一些" statusPriority"我创建条目时的字段?

1 个答案:

答案 0 :(得分:0)

是。将statusPriority字段添加到您在_JOB_PRIORITIES中定义的文档中,然后在Mongo游标中对其进行排序。

https://docs.mongodb.com/manual/reference/method/cursor.sort/