Что необходимо
Я получаю веб-крюк с объектом JSON с уникальными id
с, которые используются для ссылки на этот конкретный объект позже (это идентификаторы заказа на покупку), например:
$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"
}
);
Я пытаюсь вставить объект JSON в качестве документа и установить внутреннее значение id
объекта JSON в качестве документа MongoDB _id
.
Мне нужно сделать это, потому что я хочу, чтобы значение id
вставленных документов было уникальным ключом / идентификатором в коллекции MongoDB.
Так что, когда я пойду обновлять этот объект позже:
$json_assoc_array = array (
{
'id' => "unique-id-1",
'key_one' => "new value",
'key_two' => "some value",
'key_three' => "some value"
},
{
'id' => "unique-id-2",
'key_one' => "some value",
'key_two' => "new value",
'key_three' => "some value"
},
{
'id' => "unique-id-4",
'key_one' => "some value",
'key_two' => "some value",
'key_three' => "some value"
}
);
, мне нужно будет обновить документ id = 1
с помощью new value
в key_one
,документ id = 2
с new value
в key_two
и вставьте документ id = 4
в качестве нового документа.
Что я пробовал
$json_assoc_array = json_decode($data, true);
$my_id = $json_assoc_array['id'];
$collection = $mongo->$mongo_db_name->products;
// The below works but it end up inserting the object as
// {
// "_id": "5b821dfe3e2ffc4581116b24",
// "id": unique-id-1,
// "title": "\"Bubble Bumps\" Pipe", //
// ...
// }
// while the _id also needs to be `unique-id-1` from $json_assoc_array['id']
$result = $collection->insertOne($json_assoc_array);
// but this doesn't
$result = $collection->insertOne(array('_id' => my_id), $json_assoc_array);
// neither does this
$result = $collection->update(array('_id' => my_id), $json_assoc_array, ['upsert' => true]);
Как настроить MongoDB уникальным_id
как id
объекта, чтобы я мог позже обновить документы по id
объекта