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 });