Java 从2个集合中检索多个条目
场景:Java 从2个集合中检索多个条目,java,json,mongodb,Java,Json,Mongodb,场景: System.out.println("Fast Food Restaurants"); BasicDBObject rest = new BasicDBObject(); rest.put("categories", "Indian"); DBCursor cursor2 = table.find(rest); while(cursor2.hasNext()){ //display all fast food restaurants System.out.println(cu
System.out.println("Fast Food Restaurants");
BasicDBObject rest = new BasicDBObject();
rest.put("categories", "Indian");
DBCursor cursor2 = table.find(rest);
while(cursor2.hasNext()){ //display all fast food restaurants
System.out.println(cursor2.next());
}
我有两个JSON存储在mongodb中,格式如下:(它们来自Yelp教育)
JSON1:(Yelp业务)
{
"business_id":"tl9XIP5trlkcuSfTQqe5jg",
"full_address":"632 N Estrella Pkwy\nGoodyear, AZ 85338",
"hours":{
},
"open":true,
"categories":[
"Fast Food",
"Restaurants"
],
"city":"Goodyear",
"review_count":6,
"name":"McDonalds",
"neighborhoods":[
],
"longitude":-112.39319500000001,
"state":"AZ",
"stars":2.0,
"latitude":33.453887000000002,
"attributes":{
"Take-out":true,
"Wi-Fi":"free",
"Drive-Thru":true,
"Alcohol":"none",
"Caters":false,
"Noise Level":"average",
"Takes Reservations":false,
"Delivery":false,
"Parking":{
"garage":false,
"street":false,
"validated":false,
"lot":false,
"valet":false
},
"Has TV":true,
"Outdoor Seating":false,
"Attire":"casual",
"Waiter Service":false,
"Accepts Credit Cards":true,
"Good for Kids":true,
"Price Range":1
},
"type":"business"
}
JSON2:(评论)
他们都有相同的业务id
问题陈述:如何编写查询,以便获取“类别”:“快餐”,同时获取评论
我能够检索到一篇评论,但检索不到评论。请评论
代码:
System.out.println("Fast Food Restaurants");
BasicDBObject rest = new BasicDBObject();
rest.put("categories", "Indian");
DBCursor cursor2 = table.find(rest);
while(cursor2.hasNext()){ //display all fast food restaurants
System.out.println(cursor2.next());
}
如何显示其他JSON的评级
谢谢你的时间 你必须分两步来做。在Mongo没有加入。因此,您无法编写单个查询来访问来自两个不同集合的数据 您在以下步骤中获取了业务-
BasicDBObject rest = new BasicDBObject();
rest.put("categories", "Indian");
下一步-
DBObject query = new BasicDBObject();
DBCursor cursor3 = null;
DBObject dbObject = null;
while(cursor2.hasNext()){ //display all fast food restaurants
dbObject = cursor2.next();
query.put("business_id",dbObject.get("business_id"))//get the business_id from dbObject returned from above
cursor3 = table2.find(query); // here you have all the reviews for that business.
//next loop through cursor3 for your reviews
}
在mongodb文档中,如果您将所有内容都存储为字符串,那么您可以执行dbObject.toString()并获取json,然后使用gson的jackson将其转换为java pojo。重复。非常感谢。如何分多个步骤完成?我挠头已经有一段时间了,无法摆脱这个循环(我尝试过这样做,但有一件事我不明白。我想从第二个JSON中获取“文本”,它与第一个JSON具有相同的业务id。我在JSON2中没有真正获得评论(“文本”)(在我的示例中)我也尝试过
query.put(dbObject.get(“business_id”),“Text”);
您应该能够从cursor3-cursor3.next获取它().get(“text”)非常感谢!我让它工作了。我如何限制top3的结果?比如我可以说System.out.println((cursor3.next().get(“text”)).limit(3));
,但这不起作用!