小编mav*_*ckm的帖子

将行转移到MongoDB中的列

相关问题是在sql server中有效地将行转换为列.但答案是针对SQL的.

我想要相同的结果,即将行转移到列而不聚合MongoDB中的任何内容(截至目前).

该系列看起来如下所示.这些是Facebook页面属性的统计信息:


timestamp | propName | propValue
--------------------------------
1371798000000 | page_fans | 100
--------------------------------
1371798000000 | page_posts | 50
--------------------------------
1371798000000 | page_stories | 25
--------------------------------

我需要回答:

timestamp | page_fans | page_posts | page_stories
--------------------------------
1371798000000 | 100 | 50 | 25
--------------------------------

列名称是预先确定的.它们不必动态生成.但问题是如何在MongoDB中实现这一目标.

我认为聚合对此没有用处.我需要使用MapReduce吗?但在那种情况下,我猜没有什么可以减少的?另一种选择可能是在代码中获取这些值,并使用编程语言(例如Java)进行操作

任何见解都会有所帮助.提前致谢 :)!!!

编辑(根据Schaliasos的输入):

输入JSON:

{
        "_id" : ObjectId("51cd366644aeac654ecf8f75"),
        "name" : "page_storytellers",
        "pageId" : "512f993a44ae78b14a9adb85",
        "timestamp" : NumberLong("1371798000000"),
        "value" : NumberLong(30871),
        "provider" : "Facebook"
}
{
        "_id" : ObjectId("51cd366644aeac654ecf8f76"),
        "name" : "page_fans", …
Run Code Online (Sandbox Code Playgroud)

pivot mongodb

6
推荐指数
2
解决办法
6179
查看次数

HibernateTools逆向工程工具不为生成器添加注释

我创建了MySQL DB Schema,并且我使用Hibernate Reverse Engineering文件来创建带注释的域对象(.java).虽然文件生成正确,但它在某种程度上缺少ID字段的"Generator"注释.

下面是我的hibernate.reveng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE
hibernate-reverse-engineering PUBLIC
"-//Hibernate/Hibernate Reverse
Engineering DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd"
<hibernate-reverse-engineering>
  <table-filter match-name="products" match-catalog="test"></table-filter>
  <table catalog="test" name="products">
    <primary-key>
      <generator class="native"></generator>
      <key-column name="product_id"property="product_id" />
    </primary-key> 
  </table>
</hibernate-reverse-engineering>
Run Code Online (Sandbox Code Playgroud)

和生成的类文件(Products.java):

// default package
// Generated Jan 21, 2011 8:27:16 PM by Hibernate Tools 3.3.0.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Products generated by hbm2java
 */
@Entity
@Table(name = "products", catalog = "test")
public class Products implements java.io.Serializable {

 private String productId; …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate reverse-engineering

5
推荐指数
1
解决办法
4044
查看次数

在Unix上使用JerseyTest Grizzly Web Server的行为

我们已经创建了一个测试套件,为了运行它,我们使用嵌入式Grizzly Web Server和JerseyTest框架.

我们正在从JerseyTest扩展一个自定义类,并在其构造函数中创建ApplicationDescriptor,然后调用超类setupTestEnvironment(),它实质上启动了嵌入式的grizzly Web服务器.

我们的测试用例很少扩展此自定义类以直接启动grizzly服务器.但是,我们不会在代码中的任何位置停止此嵌入式服务器.

测试用例在Windows上运行良好,但在Unix上,它们失败,java.net.BindException端口9998正由另一个进程使用.

很明显,如果我们不在代码中停止嵌入式Web服务器,这些测试也会在Windows上出现类似错误.它们如何在Windows上正常运行并且在unix上失败.这与Unix如何产生线程或进程有关吗?

PS我们还测试了使用netstat -a |的其他进程是否正在使用端口9998 grep 9998但没有找到使用该端口的其他进程.

unix rest jersey junit4 grizzly

3
推荐指数
1
解决办法
1546
查看次数

排序行后,在Swing JTable中更改行颜色

我们使用JTable显示数据以及状态(新建,已处理,已关闭).每个状态行都有不同的颜色,这是通过重载JTable的prepareRenderer()来实现的.

现在我们需要对该表进行排序,我们正在使用table.setAutoCreateRowSorter(true); 实现这一目标.行正确排序,但行的颜色保持不变.我们需要根据状态列在此操作之后将颜色重新应用于所有行.

我想知道什么是实现这一目标的最佳方法.我可以通过以下几种方式思考:

  1. 重新绘制/重新验证表格.但我认为干脆这样做是行不通的.
  2. 捕获mouseClicked事件并确定是否单击了列标题然后手动调用prepareRenderer()然后调用repaint/revalidate
  3. 然后我读了一个问题,其中一个答案提到不要直接调用repaint/revalidate,而是更改底层数据模型,它会自动调用上面的方法.

我不知道该怎么做.任何人都可以提供一个洞察力,了解实现这一目标的正确方法是什么?

java swing jtable tablerowsorter

1
推荐指数
1
解决办法
3466
查看次数

从多个方法读取单个InputStream

我已经在类中的单个方法中初始化了一个InputStream,并将其传递给下一个方法进行处理。InputStream本质上封装了用于处理的CSV文件。

另一种方法调用传入同一 InputStream 的 2 个不同方法,一个用于检索标头,另一个用于处理内容。该结构如下所示:

main() {
  FileInputStream fis = new FileInputStream("FileName.CSV");
  BufferedInputStream bis = new BufferedInputStream(fis);
  InputStreamReader isr = new InputStreamReader(bis);

  processCSV(isr);
}

processCSV(Reader isr) {
  fetchHeaders(isr);
  processContentRows(isr);
}

fetchHeaders(Reader isr) {
  //Use BufferedReader to retrieve first line of CSV
  //Even tried mark() and reset() here
}

processContentRows(Reader isr) {
  //Cannot read the values, fetches null from InputStream :(
}
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么吗?有什么方法可以在不同的方法调用之间重用 InputStream 吗?

我正在提出可以模拟以下问题的完整程序:

  import java.io.FileInputStream;
  import java.io.BufferedInputStream;
  import java.io.InputStreamReader;
  import java.io.BufferedReader;

  public class MarkResetTest
  {
    public static …
Run Code Online (Sandbox Code Playgroud)

java inputstream java-io

0
推荐指数
1
解决办法
6132
查看次数