mongodb嵌套值使用java排序

时间:2014-01-06 13:33:23

标签: java mongodb sorting

我的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代码或其他任何方法对字符串值进行排序?

1 个答案:

答案 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数组是否存在。您必须自己添加此类验证。