mongoose/ mongodb自定义sorting

我在MongoDB中有一个stringtypes的字段。 它将包含字母和数字的组合,如“10”,“101”,“11”,“112”,“x115”,“abc.5”。 现在,如果我告诉MongoDB对它们进行sorting,它将按照字母顺序sorting,如下所示:

  • 10
  • 101
  • 11
  • 112
  • abc.5
  • X115

它在“11”之前命令“101”,我怎样才能改变sorting,使数字sorting正确?

如果您决定在数据库端执行此操作,则可能需要使用db.eval

从另一个问题提取答案:

我不认为这是可能的, sorting文档当然没有提到任何提供自定义比较函数的方法。

你可能最好在客户端进行sorting,但是如果你真的决定在服务器上做,你可以使用db.eval()来安排在服务器上运行sorting(如果你的客户端支持它)。

服务器端sorting:

 db.eval(function() { return db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.a }) }); 

与对等的客户端sorting:

 db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.b });