无法转换为 org.bson.BSONObject
cannot be cast to org.bson.BSONObject
我尝试编写这个程序,但出现此错误
cannot be cast to org.bson.BSONObject
不知道程序结构是不是没问题。我想做一个程序来搜索数据库 (mongoDB) 并向我打印所有事件,但是当我有一个 pageLoad
事件时,我想检查它是否有一个 URL 和打印它,否则它应该再次搜索下一个事件,直到 pageLoad
的另一个事件。所以像这样一个循环。
例如结果必须是这样的。
- 鼠标移动
- 鼠标移动
- 鼠标移动
- 点击
- 滚动
- 点击
- pageLoad....//http://www......url(1).....e.x
- 鼠标移动
- 点击
- pageLoad....//http://www......url(2).....e.x
MongoClient mongoClient;
DB db;
mongoClient = new MongoClient("localhost", 27017);
db = mongoClient.getDB("behaviourDB_areas");
DBCollection cEvent = db.getCollection("event");
BasicDBObject orderBy = new BasicDBObject();
orderBy.put("timeStamp", 1);
DBCursor cursorEvents = null;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("user_id", "55b20db905f333defea9827f");
cursorEvents = cEvent.find(searchQuery).sort(orderBy);
if (cursorEvents.hasNext()) {
while ((((BSONObject) db.getCollection("event")).get("type") != "pageLoad")) {
System.out.println(cursorEvents.next().get("type").toString());
if (((BSONObject) db.getCollection("event")).get("type") == "pageLoad") {
System.out.println(cursorEvents.next().get("url").toString());
}
}
}
mongoClient.close();
}
}
要使用游标遍历查询结果,请使用以下代码:
while (cursorEvents.hasNext()) {
DBObject documentInEventCollection = cursorEvents.next();
// do stuff with documentInEventCollection
}
此外,不要试图将 String
与 ==
或 !=
进行比较。这不会比较实际的字符串,而是比较对象引用。如果要检查文档的 type
字段是否等于字符串 pageLoad
,请使用以下代码:
if ("pageLoad".equals(documentInEventCollection.get("type")) {
// do something
} else {
// do something else
}
我尝试编写这个程序,但出现此错误
cannot be cast to org.bson.BSONObject
不知道程序结构是不是没问题。我想做一个程序来搜索数据库 (mongoDB) 并向我打印所有事件,但是当我有一个 pageLoad
事件时,我想检查它是否有一个 URL 和打印它,否则它应该再次搜索下一个事件,直到 pageLoad
的另一个事件。所以像这样一个循环。
例如结果必须是这样的。
- 鼠标移动
- 鼠标移动
- 鼠标移动
- 点击
- 滚动
- 点击
- pageLoad....//http://www......url(1).....e.x
- 鼠标移动
- 点击
- pageLoad....//http://www......url(2).....e.x
MongoClient mongoClient;
DB db;
mongoClient = new MongoClient("localhost", 27017);
db = mongoClient.getDB("behaviourDB_areas");
DBCollection cEvent = db.getCollection("event");
BasicDBObject orderBy = new BasicDBObject();
orderBy.put("timeStamp", 1);
DBCursor cursorEvents = null;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("user_id", "55b20db905f333defea9827f");
cursorEvents = cEvent.find(searchQuery).sort(orderBy);
if (cursorEvents.hasNext()) {
while ((((BSONObject) db.getCollection("event")).get("type") != "pageLoad")) {
System.out.println(cursorEvents.next().get("type").toString());
if (((BSONObject) db.getCollection("event")).get("type") == "pageLoad") {
System.out.println(cursorEvents.next().get("url").toString());
}
}
}
mongoClient.close();
}
}
要使用游标遍历查询结果,请使用以下代码:
while (cursorEvents.hasNext()) {
DBObject documentInEventCollection = cursorEvents.next();
// do stuff with documentInEventCollection
}
此外,不要试图将 String
与 ==
或 !=
进行比较。这不会比较实际的字符串,而是比较对象引用。如果要检查文档的 type
字段是否等于字符串 pageLoad
,请使用以下代码:
if ("pageLoad".equals(documentInEventCollection.get("type")) {
// do something
} else {
// do something else
}