示例mongodb记录:
[
{first: "Some", middle: "A", last: ""},
{first: "Some", middle: "B", last: ""},
{first: "Some", middle: "", last: "C"},
{first: "Some", middle: "D", last: ""}
]
输出:
If .sort({middle:1,last:1}) =====> C,A,B,D
If .sort({last:1, middle:1}) =====> A,B,D,C
If [what here ? ] =====> A,B,C,D
您的问题是您试图对两个字段进行排序,如果另一个不为空,则使用一个。没有简单的排序方式可以提供该功能,因为它总是按一个字段然后按另一个字段排序。
您将需要作为一个多步骤查询来执行此操作。首先获取数据并生成一个新字段进行排序,其中包含last,如果last为空白,则使用middle。然后在该新字段上排序。
这将使索引相当无用,因此对于大型数据集,性能将变差。
更好的方法是更正您的数据,并且永远不要使用空白的姓氏进行保存。如果姓氏为空,则将中间名移至姓氏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句