您好我正在使用mongodb 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 up?记录????
我希望以这种格式保存数据
..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 :(得分:1)
所以你试图再次插入相同的文档,但唯一的区别是它在预订数组中有额外的值?
请注意,这不是最佳选择(除非您必须这样做)。
无论如何,问题是$ talent [" _id"]已经在数据库中,所以当你执行save()时它会更新以前的文档。
你应该做的是
insert()
但在您需要从$ talent中删除_id字段之前,因为您无法在mongo中插入两个具有相同_id的文档,为此您可以执行此操作
unset($talent["_id"])
修改强>
然后问题出在php端。检查array_push()是否正在执行您希望它执行的操作。
我会这样做:
$new_booking = array(
"booking_id" => $booking_id,
"startdate" => $startdate,
"enddate" => $startdate,
"starttime" => $starttime,
"endtime" => $endtime);
BookingArray[] = $new_booking;
您也可以尝试使用以下sintax
$mongoDb->update(array('_id'=>$talent["_id"]),array('$set'=>array('bookings'=>$BookingArray)),array('$upsert'=>true));
答案 1 :(得分:0)