2014-12-18 2 views
0

안녕하세요, mongodb php에서 작업하고 있습니다. 나는 내가 처음으로 다음 레코드가 올바르게 삽입지고 있지만, 저축을하고 때Moongodb-PHP : 기존 문서에 새 레코드를 올리는 방법

array_push($BookingArray, array(
    "booking_id" => $booking_id, 
    "startdate" => $startdate, 
    "enddate" => $startdate, 
    "starttime" => $starttime, 
    "endtime" => $endtime)); 

$talent['bookings'] = $BookingArray; 
$mongoDb->save($talent); 

문제는 다음과 같은 방법으로 기존의 문서에 데이터를 삽입하고 두 번째 시간 간격의 저장 두 번째는 내가 "예약에 추가 할 때 "그때 그것은 새로운 가치로 예약의 이전 기록을 갱신하고 있습니다.

나는 그것을 원하지 않는다. 두 번째 레코드가 도착하면 이전 레코드를 변경하지 않고 예약에 추가해야합니다. mongodb php를 사용하여 레코드를 upsert하는 방법 ????

나는 데이터가이 형식

..upper content(assume)... 
    } 
    } 
    }, 
    "bookings": [ 
    { 
    "booking_id": "5492985664363d880200002a", 
    "startdate": "12/01/2014", 
    "enddate": "12/01/2014", 
    "starttime": "12:30am", 
    "endtime": "2:00am" 
}, 
     { 
    "booking_id": "5192285664363f880200002a", 
    "startdate": "13/01/2014", 
    "enddate": "14/01/2014", 
    "starttime": "11:30am", 
    "endtime": "2:30am" 
} 
] 
} 
+0

귀하의 질문을 수정하시기 바랍니다 다음 sintax으로 시도 migth. – dg99

+0

나는 나의 질문을 내 Umongo 클라이언트 데이터베이스의 데이터로 업데이트했다. 새로운 예약 ID가있는 데이터가 오면 이전 데이터를 업데이트해서는 안됩니다. 대신 이전에 추가해야합니다 ... – Shaggie

+0

지금 내 이전 하나를 업데이 트하고 있습니다 – Shaggie

답변

0

사용 insert() 대신 save()에 저장하고자합니다. 저장하면 업 서 트가 수행됩니다.

개체가 데이터베이스에있는 경우 기존 데이터베이스 개체를 업데이트하고, 그렇지 않으면이 개체를 삽입하십시오.

0

그래서 동일한 문서를 다시 삽입하려고하지만 예약 배열에 추가 값이 있다는 유일한 차이점이 있습니까?

이것이 최선의 방법은 아니라는 점에 유의하십시오 (이렇게하지 않는 한).

어쨌든 문제는 $ talent [ "_ id"]가 이미 db에 있으므로 save()를 수행하면 이전 문서가 업데이트된다는 것입니다.

은 당신이해야 할 것은

insert() 

하지만 당신은 당신이 몽고에서 같은 _id 두 doccuments를 삽입 할 수 없기 때문에이 들어, $ 재능에서 _id 필드를 제거해야하기 전에 당신은 할 수 있습니다

unset($talent["_id"]) 

편집 :

그런 문제가 PHP 측에 있습니다. array_push()가 원하는 것을하고 있는지 확인하십시오.

I는 다음과 같이 할 것 :

$new_booking = array(
"booking_id" => $booking_id, 
"startdate" => $startdate, 
"enddate" => $startdate, 
"starttime" => $starttime, 
"endtime" => $endtime); 

BookingArray[] = $new_booking; 

또한 당신은 당신이 업로드하려고 데이터를 포함하는 대신

$mongoDb->update(array('_id'=>$talent["_id"]),array('$set'=>array('bookings'=>$BookingArray)),array('$upsert'=>true)); 
+0

아니 내 친구 난 당신이 내 질문을 신중하게 읽어 havent 생각합니다. 예약 배열에 삽입 할 다른 booking_id가있는 여러 레코드가 있어야합니다. 한 재능에는없는 재능이 있습니다. booking_id 필드는 그가 신청 한 예약의 _id입니다. 3 가지 예약에 재능이 적용되면 3 가지 예약 모두의 booking_id가 bokings 배열 안에 있어야합니다. – Shaggie

+0

지금 당장 당신이 내가 기대하는 형식을 볼 수있는 나의 질문을 다시 편집 했음 – Shaggie

+0

@Shaggie 나는 내 대답을 편집했다. – leojg