0
我在使用Java代碼在mongo數據庫中迭代文檔時遇到了一個問題。我在集合中將User_ID值作爲「demo」迭代記錄。迭代時它存儲最新的記錄,而不是所有匹配的數據。代碼如下:在Mongo中使用遊標對多個文檔進行迭代
public BasicDBObject Demo1(String User_ID) throws Exception {
DB db = ConnectToDB.getConnection();
DBCollection collection = db.getCollection("demo");
BasicDBObject document = new BasicDBObject();
BasicDBObject Project_Detail = new BasicDBObject();
document.put("User_ID", User_ID);
field.put("ProjectName", 1);
field.put("ProjectNumber", 1);
field.put("_id", 0);
DBCursor cursor = collection.find(document, field);
while (cursor.hasNext()) {
BasicDBObject object=new BasicDBObject();
object = (BasicDBObject) cursor.next();
Project_Detail.append("ProjectName", object.get("ProjectName"));
Project_Detail.append("ProjectNumber", object.get("ProjectNumber"));
System.out.println("Project_Detail value is:" + Project_Detail);
}
return Project_Detail;
}
我蒙戈收集如下,這是一種有兩個文件:
{
"_id" : ObjectId("59dc85905f0446bfb39417f5"),
"User_ID" : "demo",
"ProjectNumber" : "1",
"ProjectName" : "Project1",
},
{
"_id" : ObjectId("59dc85a15f0446bfb39417f9"),
"User_ID" : "demo",
"ProjectNumber" : "2",
"ProjectName" : "Project2",
}
當我運行上面的代碼,它顯示給定USER_ID以下結果:「演示「:
{
"ProjectName": "Project2",
"ProjectNumber": "2"}
但理想的結果應該是:
{
"ProjectName": "Project1",
"ProjectNumber": "1"},
{
"ProjectName": "Project2",
"ProjectNumber": "2"}
它似乎是更新第二個計數器中的記錄,因此在第二次迭代中更新第二個文檔中的值。請指定是否可以獲取匹配記錄並將其存儲在結果中。謝謝你的幫助。
的感謝!它的工作正常。如果有解決方案,我們可以將BasicDBList對象'Project_Detail'轉換爲BasicDBObject作爲返回類型嗎?我可以使用BasicDBList作爲返回類型,但以某種方式使用其他方案將結果作爲BasicDBObject返回。 –
請參閱BasicDBList是一個數組,如果您將列表轉換爲對象,那麼對於每個對象,您需要一個鍵 –
好吧,謝謝。 –