Я получаю и храню массив объектов JSON, например:
$json_assoc_array = array (
{
'id' => "unique-id-1",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'id' => "unique-id-2",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'id' => "unique-id-3",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
}
);
И позже я буду получать обновления этих объектов в том же формате.Мне нужно обновить объекты / документы по их полю id
.
Когда я вставляю их в MongoDB с помощью простого insertMany
, они также получают уникальный объект MongoDB _id
s, поэтому результирующие документы выглядят так:
$json_assoc_array = array (
{
'_id' => "5b824c113e2ffc4e7239bfc5"
'id' => "unique-id-1",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'_id' => "5b824c1b3e2ffc4e7239caa2"
'id' => "unique-id-2",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'_id' => "5b824c1b3e2ffc4e7239caa3"
'id' => "unique-id-3",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
}
);
Там никогда не будетбыть другим документом с идентификатором unique-id-1
.Итак, я сейчас устанавливаю их перед их первоначальной вставкой, например:
$json_assoc_array = json_decode($data, true);
// Set order MongoDB _id
$json_assoc_array['_id'] = $json_assoc_array['id'];
// Set MongoDB collection
$collection = $mongo->mongo_db_name->collection;
// Insert documents into MongoDB
$result = $collection->insertMany( $json_assoc_array );
// Now when I insert the above documents, they result in this
$json_assoc_array = array (
{
'_id' => "unique-id-1"
'id' => "unique-id-1",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'_id' => "unique-id-2"
'id' => "unique-id-2",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
},
...
);
Есть ли причина, почему это плохая практика?
Должен ли я вместо этого оставить _id
, который будет установлен MongoDB, и использовать поле id
для обновления существующих документов?