MongoDB:按字段排序,然后按字母顺序排序

时间:2015-09-20 15:03:27

标签: mongodb

在我的数据库中,我有一个name字段。在某些记录中,它是一个空字符串,在其他记录中,它有一个名称。

在我的查询中,我目前正在做:

db.users.find({}).sort({'name': 1})

但是,这将首先返回带有空名称字段的结果,然后按字母顺序返回结果。正如所料,执行.sort({'name': -1})会返回带有名称的结果,然后使用空字符串返回结果,但它是按字母顺序排列的。

有没有一种优雅的方式来实现这种类型的排序?

1 个答案:

答案 0 :(得分:1)

如果您要过滤掉空Pre-populate the directory with some random file names AIG-taral-3486.txt COV-oipuc-9088.txt CUG-vowan-5758.txt FEH-ieqek-0603.txt IUS-aaduw-7080.txt KER-jazuc-4824.txt MIZ-iezec-8255.txt NIT-kupib-6873.txt PUX-oocov-2216.txt QAW-xonod-3937.txt QES-wawok-4790.txt RON-difag-1986.txt SAD-gesug-5706.txt SAJ-luqoj-4311.txt TUZ-wapaw-8547.txt VAL-zutap-8054.txt YIP-xudeb-7397.txt YUP-uudiv-8848.txt ZIB-jurax-2903.txt ZUR-xonik-8800.txt aavfile*147*.txt demo.sh diman\\\7115.txt ganur\\\8732.txt gud-{7049}-{3103}.txt listfilesbefore.swp lur[123]maee.txt rivfile*065*.txt ueo(417)yea.txt uoi(751)qio.txt woi-{37E8}-{009C}.txt xof[123]hoxe.txt Create some new files with metacharacters in the names AIG-taral-3486.txt COV-oipuc-9088.txt CUG-vowan-5758.txt FEH-ieqek-0603.txt IUS-aaduw-7080.txt KER-jazuc-4824.txt MIZ-iezec-8255.txt NIT-kupib-6873.txt PUX-oocov-2216.txt QAW-xonod-3937.txt QES-wawok-4790.txt RON-difag-1986.txt SAD-gesug-5706.txt SAJ-luqoj-4311.txt TUZ-wapaw-8547.txt VAL-zutap-8054.txt YIP-xudeb-7397.txt YUP-uudiv-8848.txt ZIB-jurax-2903.txt ZUR-xonik-8800.txt aavfile*147*.txt demo.sh diman\\\7115.txt ganur\\\8732.txt gud-{7049}-{3103}.txt listfilesbefore.swp lur[123]maee.txt new(123)file.txt new[123]file.txt newfile*321*.txt newfile-{A39F}-{B77D}.txt newfile\\\.txt rivfile*065*.txt ueo(417)yea.txt uoi(751)qio.txt woi-{37E8}-{009C}.txt xof[123]hoxe.txt Create sed script /^AIG-taral-3486\.txt$/d /^COV-oipuc-9088\.txt$/d /^CUG-vowan-5758\.txt$/d /^FEH-ieqek-0603\.txt$/d /^IUS-aaduw-7080\.txt$/d /^KER-jazuc-4824\.txt$/d /^MIZ-iezec-8255\.txt$/d /^NIT-kupib-6873\.txt$/d /^PUX-oocov-2216\.txt$/d /^QAW-xonod-3937\.txt$/d /^QES-wawok-4790\.txt$/d /^RON-difag-1986\.txt$/d /^SAD-gesug-5706\.txt$/d /^SAJ-luqoj-4311\.txt$/d /^TUZ-wapaw-8547\.txt$/d /^VAL-zutap-8054\.txt$/d /^YIP-xudeb-7397\.txt$/d /^YUP-uudiv-8848\.txt$/d /^ZIB-jurax-2903\.txt$/d /^ZUR-xonik-8800\.txt$/d /^aavfile\*147\*\.txt$/d /^demo\.sh$/d /^diman\\\\\\7115\.txt$/d /^ganur\\\\\\8732\.txt$/d /^gud-{7049}-{3103}\.txt$/d /^listfilesbefore\.swp$/d /^lur\[123\]maee\.txt$/d /^rivfile\*065\*\.txt$/d /^ueo(417)yea\.txt$/d /^uoi(751)qio\.txt$/d /^woi-{37E8}-{009C}\.txt$/d /^xof\[123\]hoxe\.txt$/d Apply it listfilesafter.swp new(123)file.txt new[123]file.txt newfile*321*.txt newfile-{A39F}-{B77D}.txt newfile\\\.txt 字段的文档,请更改您的查询:"name"