我的mongoDB集合包含以下文档
{
"diskUtilization" : [
{
"usePercentage" : "12%",
"mountedOn" : "Mounted",
"available" : "Available",
"blocks" : "1K-blocks",
"used" : "1238921",
"fileSystem" : "Filesystem"
},
{
"usePercentage" : "19%",
"mountedOn" : "/",
"available" : "5617932",
"blocks" : "7223800",
"used" : "1238920",
"fileSystem" : "/dev/sda1"
},
{
"usePercentage" : "1%",
"mountedOn" : "/dev",
"available" : "500436",
"blocks" : "500440",
"used" : "4",
"fileSystem" : "udev"
}
}
现在我想根据使用的密钥排序数据,所以我的java代码如下
DBCursor cur = coll.find().sort(new BasicDBObject("diskUtilization.used", -1)).limit(100);
但由于字符串格式的给定键值,光标结果上方不显示数据排序顺序。我如何将mongo字符串值转换为int,然后使用java代码或其他任何方法对字符串值进行排序?
答案 0 :(得分:0)
不幸的是,你必须自己做。
从shell中你可以发出如下内容:
db.collection.find().forEach(function(doc)
{
doc.diskUtilization.map(function(sub) {
sub.usePercentage=parseInt(sub.usePercentage);
})
db.collection.save(doc);
});
请注意,这个简单的JavaScript代码不会检查是否正确,例如diskUtilization数组是否存在。您必须自己添加此类验证。