これは私がbookingId
に基づいStatus
を更新しようとしている私のdatabase structure
更新ネストされた配列の値
{
"_id" : ObjectId("58243c430386650d78d12d53"),
"email" : "[email protected]",
"dentistName" : "Suzuka",
"tempDetails" : [
{
"tempName" : "Elsa",
"city" : "bangalore",
"tempEmail": "[email protected]",
"experience" : "5",
"hiredDates" : [
{
"status" : "Accepted",
"bookingId" : "36Y0YM",
}
],
},
{
"tempName" : "Elsa",
"city" : "bangalore",
"tempEmail": "[email protected]",
"experience" : "5",
"hiredDates" : [
{
"status" : "Hired",
"bookingId" : "92Qhd7",
}
],
},
{
"tempName" : "Elsa",
"city" : "bangalore",
"experience" : "5",
"tempEmail": "[email protected]",
"typeOfPractice" : "Oral Surgery",
"hiredDates" : [
{
"status" : "Hired",
"bookingId" : "95kTe9",
}
],
}
]
}
です。私は値を更新することができません。私はJAVA MONGODB
で次のコードを試しましたが、更新されていないようです。
BasicDBObject searchQuery = new BasicDBObject();
List<BasicDBObject> andQuery = new ArrayList<BasicDBObject>();
andQuery.add(new BasicDBObject("email", dentalEmail));
andQuery.add(new BasicDBObject("tempDetails.tempEmail",tempEmail));
searchQuery.put("$and", andQuery);
DBCursor cursor = col.find(searchQuery);
if (cursor.count() != 0) {
while (cursor.hasNext()) {
BasicDBList jobStatusList = (BasicDBList) cursor.next().get("tempDetails");
for(int k=0;k<jobStatusList.size();k++)
{
BasicDBObject tempJobObject = (BasicDBObject) jobStatusList.get(k);
BasicDBList hiredDatesList = (BasicDBList) tempJobObject.get("hiredDates");
for(int i =0; i<hiredDatesList.size();i++)
{
BasicDBObject hiredDatesObject = (BasicDBObject) hiredDatesList.get(i);
String dbBookingId = hiredDatesObject.getString("bookingId");
if(dbBookingId.equalsIgnoreCase(bookingId))
{
BasicDBObject doc = new BasicDBObject("$set",
new BasicDBObject().append("tempDetails."+k+".hiredDates."+i+".status", status));
col.update(searchQuery, doc, false, false);
System.out.println(doc);
}else{
result = false;
}
}
私はBookingId
に基づいてレコードを更新するために苦労してきたよう親切にこの問題で私を助けて。ドキュメントをクエリで取得し、オブジェクトを反復処理します。もし予約されたものが一致すれば、レコードを更新しています。何が変わるべきか教えてください。
「オブジェクトを反復し、予約IDが一致する場合はレコードを更新しています」というコードを間違いなく追加してください。また、何らかのエラーが発生している場合は、完全なスタックトレースを投稿してください。 – rafid059
@RafiduzzamanSonnetエラーはありません。今すぐコードを追加しています。 – Rajeev
印刷された検索と更新を使用してシェルコマンドにemを入れると、それは更新されますか? – HoefMeistert