【发布时间】:2016-08-19 08:15:07
【问题描述】:
我想了解如何使用 MongoDB 进行此操作
我有名称为“file1”、“file2”、“file22”、“file11”的文档(名称可以是任何名称,没有特定的模式) 我运行查询以获取按名称排序的所有文档,结果与预期不符。
> db.mydata.find().sort({"name":1});
{ "_id" : ObjectId("571e5a787e88d30b20b7857c"), "name" : "file1" }
{ "_id" : ObjectId("571e5a8c7e88d30b20b7857d"), "name" : "file11" }
{ "_id" : ObjectId("571e5a977e88d30b20b7857f"), "name" : "file2" }
{ "_id" : ObjectId("571e5a937e88d30b20b7857e"), "name" : "file22" }
预期的是(字母/自然顺序)
{ "_id" : ObjectId("571e5a787e88d30b20b7857c"), "name" : "file1" }
{ "_id" : ObjectId("571e5a977e88d30b20b7857f"), "name" : "file2" }
{ "_id" : ObjectId("571e5a8c7e88d30b20b7857d"), "name" : "file11" }
{ "_id" : ObjectId("571e5a937e88d30b20b7857e"), "name" : "file22" }
根据我的发现,还有其他的排序方式,比如使用aggregate + $project 和$meta: "textScore",但到目前为止我还没有成功。
【问题讨论】:
-
他们都有
file吗?? -
我不确定
file1 < file2 < file11 < ...是如何被视为字母顺序的?在任何字典中你都找不到A < B < AA。 -
我不会说你想做的是自然秩序。 mongodb 的自然顺序是指文档插入数据库的自然顺序:docs.mongodb.org/v3.0/reference/method/cursor.sort/…
-
@BlazeSahlzen,我真的不想讨论正确的“术语”,已经有一篇文章(blog.codinghorror.com/sorting-for-humans-natural-sort-order)。我更改了问题的标题并添加了“自然排序”标签,因此我们应该专注于问题的解决方案。
-
如果所有人都同意 MongoDB 不提供此功能,并且必须在 JavaScript 中完成,那么this answer 就是要走的路。
标签: javascript mongodb mongodb-query natural-sort