异常:FieldPath 'C6' 在 mongo Java 中不以 $" 开头
exception: FieldPath 'C6' doesn't start with $" in mongo Java
我正在使用 Java
处理 Mongodb
。因为我试图在某些条件下 select 某些记录,包括 group by
。我使用的代码如下。
DBObject wherequery = new BasciDBOBject();
wherequery.put("deviceID", C6);
wherequery.put("reqTime", new BasicDBObject(
"$lt", sometime)
.append("$gt", someothertime));
DBObject project = new BasicDBObject("$project",
wherequery);
DBObject groupFields = new BasicDBObject("_id",
"$requestID");
DBObject group = new BasicDBObject("$group", groupFields);
AggregationOutput output = collection.aggregate(project, group);
当我 运行 这段代码时,出现以下错误:
exception: FieldPath 'C6' doesn't start with $"
这个错误是什么意思?它表示 deviceID C6
我已经使用过。我错过了什么或者我怎么错了?
请帮帮我
如果您想要 select 匹配指定条件的文档,您应该在第一个管道阶段使用 $match
运算符,而不是 $project
。
将您的 wherequery
添加到 $match
并为 project
使用不同的 DBObject
检查代码如下:
DBObject wherequery = new BasciDBOBject();
wherequery.put("deviceID",C6 );
wherequery.put("reqTime", new BasicDBObject(
"$lt", sometime)
.append("$gt", someothertime));
DBObject match = new BasicDBObject("$match",
wherequery);
DBObject groupFields = new BasicDBObject("_id",
"$requestID");
DBObject group = new BasicDBObject("$group", groupFields);
//for projecting data
DBObject projectData = new BasciDBOBject();
projectData.put("deviceID", "$deviceID"); // projectData.put("deviceID", 1); this also work
projectData.put("reqTime", "$reqTime");
DBObject project = new BasicDBObject("$project",
projectData);
AggregationOutput output = collection.aggregate(match, group,project);
更多信息请查看此 Mongo Java driver for aggregation
我正在使用 Java
处理 Mongodb
。因为我试图在某些条件下 select 某些记录,包括 group by
。我使用的代码如下。
DBObject wherequery = new BasciDBOBject();
wherequery.put("deviceID", C6);
wherequery.put("reqTime", new BasicDBObject(
"$lt", sometime)
.append("$gt", someothertime));
DBObject project = new BasicDBObject("$project",
wherequery);
DBObject groupFields = new BasicDBObject("_id",
"$requestID");
DBObject group = new BasicDBObject("$group", groupFields);
AggregationOutput output = collection.aggregate(project, group);
当我 运行 这段代码时,出现以下错误:
exception: FieldPath 'C6' doesn't start with $"
这个错误是什么意思?它表示 deviceID C6
我已经使用过。我错过了什么或者我怎么错了?
请帮帮我
如果您想要 select 匹配指定条件的文档,您应该在第一个管道阶段使用 $match
运算符,而不是 $project
。
将您的 wherequery
添加到 $match
并为 project
使用不同的 DBObject
检查代码如下:
DBObject wherequery = new BasciDBOBject();
wherequery.put("deviceID",C6 );
wherequery.put("reqTime", new BasicDBObject(
"$lt", sometime)
.append("$gt", someothertime));
DBObject match = new BasicDBObject("$match",
wherequery);
DBObject groupFields = new BasicDBObject("_id",
"$requestID");
DBObject group = new BasicDBObject("$group", groupFields);
//for projecting data
DBObject projectData = new BasciDBOBject();
projectData.put("deviceID", "$deviceID"); // projectData.put("deviceID", 1); this also work
projectData.put("reqTime", "$reqTime");
DBObject project = new BasicDBObject("$project",
projectData);
AggregationOutput output = collection.aggregate(match, group,project);
更多信息请查看此 Mongo Java driver for aggregation