我正在使用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
我想现在我不能说清楚了。
如果有解决方案,请检查并提供解决方案。
感谢。