Bạn đã sử dụng một số nguyên bình thường (MongoInt32) làm _id
đồng ruộng. Và MongoInt32 không giống với MongoID. Họ là hai giai cấp khác nhau. Bạn có thể xóa nó bằng:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Thông tin bổ sung:
MongoId được sử dụng làm giá trị cho _id
trường nếu bạn không tự đặt giá trị, chẳng hạn như với:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Nếu bạn truy xuất tài liệu này và var_dump () mà bạn sẽ thấy:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Ghi chú trong tài liệu có nghĩa là bạn không thể xóa tài liệu đó ngay bây giờ bằng:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Nhưng thay vào đó, bạn sẽ cần sử dụng:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Điểm cuối cùng tôi muốn nêu ra rằng bạn không thực sự phải sử dụng new MongoInt32(1)
ngay từ đầu, bạn chỉ có thể sử dụng:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
Bạn chỉ cần MongoInt32 / MongoInt64 trong trường hợp bạn đang sử dụng nền tảng 32 bit (hoặc Windows) và cần xử lý số lượng lớn.