解析并选择mongodb

时间:2014-05-26 18:49:20

标签: java mongodb

我正在使用mongodb并遇到问题 我想从URL中选择存储在mongodb文档(JSON)中的主机。

我该如何实时做到这一点?

我目前正在做的是首先用主机为每条记录更新mongodb记录,然后我在主机上进行分组。

例如。假设我有类似http://example.com/a/b/c的网址,那么我使用表示example.com的域(比如作为主机)更新每条记录,然后通过操作为我的组选择主机。

所以基本上我想选择主机但不用主机更新每条记录。

这可能吗?怎么样?

感谢。

不知道是否有人得到了这个。 如此清晰的例子(我认为), 在更新之前我有这个

1。 { "url": "http://www.example.com/a/b/c" }

更新后我将其设为

2。 { "url": "http://www.example.com/a/b/c", "host":"www.example.com" }

所以我想通过查询在我的组中选择主机而不更新文档。

-----另一种解释。 我有一个如上所述的mongo文件,只有url(上面指向1) 那么我怎样才能通过查询url的主机来进行分组,而不是url本身。

       query = new BasicDBObject();            

        key = new BasicDBObject();
        key.put("url", true);

        DBCursor cursor = table.find(query,key);

        while(cursor.hasNext())
        {
            System.out.println(cursor.next()); //will print whole url
        }

        System.out.println("============Printing only host(domain) from url");

        key = new BasicDBObject();
        key.put("url", true);

        cursor = table.find(query,key);

        while(cursor.hasNext())
        {
            System.out.println(new URL(cursor.next().get("url").toString()).getHost());        //will print only host www.example.com
        }

`

上面的代码将首先打印url,然后仅使用Cursor主持。

但是我想通过以某种方式提取它来在主机(url的域)上进行分组。

这就是为什么我现在正在做的事情,我首先在url上分组获取唯一的url然后使用JAVA NET包的URL类我为我的JSON文档的每个唯一url获取主机(使用.getHost()方法)并按照我在上面第(2)点所示的主机更新它。

现在我可以轻松地在主持人上进行分组。

但我不想先更新mongo文档, 我只是想直接在主机上进行分组(这意味着选择url但是实时解析主机)这样我就可以减少用主机更新每个文档的一步。

这可能吗?

我们可以在mysql中做些什么我觉得这样select somefunction_gethost(url) from table

我想现在我不能说清楚了。

如果有解决方案,请检查并提供解决方案。

感谢。

0 个答案:

没有答案