Mongo에서 sql과 같은 쿼리를 작성하는 방법을 배우려는 노력으로이 집계 프레임 워크를 발견했습니다. 코드를 실행할 때 'columns'에는 숫자가 있지만 평균은 항상 '0' 내가 이해한다면 mongoDB는 문자열 (모든 SQL Server 데이터베이스에서 mongoDB로 전송 된 정수)의 모든 값을 저장하므로 MongoDB로 작업 할 때 실제로 타입을 신경 쓰지 않아도됩니까? 누군가 내 평균 기능이 작동하지 않는 이유를 알 수 있습니까? 주문 수량은 1.000000 - 7.000000 사이의 숫자입니다.MongoDB의 집계 문제
DBCollection order = db.getCollection("Orderstatus");
DBObject match = new BasicDBObject("$match", new BasicDBObject("Company", "100"));
DBObject fields = new BasicDBObject("Facility", 1);
fields.put("Ordered quantity", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields);
DBObject groupFields = new BasicDBObject("_id", "$Facility");
groupFields.put("average", new BasicDBObject("$avg", "$Ordered quantity"));
DBObject group = new BasicDBObject("$group", groupFields);
AggregationOutput output = order.aggregate(match, project,group);
System.out.println(output);
것은 내가들은 아래의 코드를 사용하여 정수로 저장됩니다 내 SQL 서버 데이터베이스에서 그들을 가지고 있기 때문에 숫자가 정수로 될 것이라고 생각한다는 것입니다. 나는 값을 얻을 때 getString()을 사용한다는 것을 알게되었는데, 그 이유는 숫자가 mongodb의 문자열이기 때문입니까? 어떻게 정수로 얻을 수 있습니까 ?? 나는 숫자로 그들을 조작 할 수 있기를 정말로 원한다! 이런 일이
StringBuilder orderstatus = new StringBuilder();
orderstatus.append("SELECT * FROM dbo.fact_orderstatus");
PreparedStatement t = connect.prepareStatement(orderstatus.toString());
DBCollection orderstat = db.getCollection("Orderstatus");
ResultSet v = t.executeQuery();
ResultSetMetaData rsm = t.getMetaData();
int column = rsm.getColumnCount();
while (v.next()) {
BasicDBObject orderObj = new BasicDBObject();
for(int x=1; x<column +1; x++){
String namn= rsm.getColumnName(x);
String custNum = (v.getString(x));
if (custNum != null && !custNum.trim().isEmpty()
&& custNum.length() != 0)
orderObj.append(namn, custNum);
}
orderstat.insert(orderObj)
유형에 대한 이해가 잘못되었습니다. 숫자를 문자열로 저장하면 숫자를 평균 처리하는 등 숫자로 조작 할 수 없습니다. 숫자를 숫자로 저장하십시오 (따옴표 없음) –