[
{"name": "Card 1"},
{"name": "Card 2"},
{"name": "Card 10"}
]
Run Code Online (Sandbox Code Playgroud)
MongoDb结果的排序依据{ "name": 1 }是
[
{"name": "Card 1"},
{"name": "Card 10"},
{"name": "Card 2"}
]
Run Code Online (Sandbox Code Playgroud)
我该如何纠正?
这是因为,numbers您的数据中被比较为String。因此,您获得的排序值为1、10、2,依此类推。
创建集合索引时,必须指定与各种特定于语言的规则进行比较的比较。默认情况下,当您创建没有排序规则信息的集合时,默认值numericOrdering设置为false-这意味着在比较时将数字视为字符串。
因此,您必须使用归类为numericOrderingtrue的索引来创建索引,或者在查询时间内提供如下信息。
db.collection.find({}).sort({
"name": 1
}).collation({
locale: "en_US", numericOrdering: true
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |