我有包含如下对象的集合:
{
"_id" : ObjectId("57f00cf47958af95dca29c0c"),
"id" : "...",
"threadId" : "...",
"ownerEmail" : "...@...",
"labelIds" : [
...
],
"snippet" : "...",
"historyId" : "35699995",
"internalDate" : "1422773000000",
"headers" : {
"from" : "...@...",
"subject" : "....",
"to" : "...@..."
},
"contents" : {
"html" : "...."
}
}
Run Code Online (Sandbox Code Playgroud)
在访问对象时,我想通过iternalDate值对它们进行排序,该值应该是整数,但它是一个字符串.有没有办法在提取时对它们进行排序,即使这些是字符串?按字母顺序?或者有没有办法将它们无痛地转换为整数?
Dan*_*ney 14
整理是你需要的......
db.collection.find()
.sort({internalDate: 1})
.collation({locale: "en_US", numericOrdering: true})
Run Code Online (Sandbox Code Playgroud)
Alb*_*les 10
在我看来,这里最好的解决方案是首先将其解析为整数.您可以使用javascript这样的简单脚本,使用节点的mongodb客户端:
db.collection.find({}, {internalDate: 1}).forEach(function(doc) {
db.collection.update(
{ _id: doc._id },
{ $set: { internalDate: parseInt(doc.internalDate) } }
)
})
Run Code Online (Sandbox Code Playgroud)
您还可以使用聚合方法对实际上是字符串的数字进行排序。
db.collection.aggregate([{
$sort : {
internalDate : 1
}
}], {
collation: {
locale: "en_US",
numericOrdering: true
}
});
Run Code Online (Sandbox Code Playgroud)
如果您使用 mongoose-paginate 包进行服务器端分页..所以不要使用此包,仅使用mongoose-paginate-v2进行服务器端分页。这个包用于nodejs端
| 归档时间: |
|
| 查看次数: |
8036 次 |
| 最近记录: |