Я пытаюсь встать на работу и не получаю результатов
У меня есть три переменные, которые я публикую перед этим сценарием. Если я обновлюсь, я получу результат, но я хочу отказаться и не получаю результатов.
Вот мой код:
if(isset($_POST)){
if($array){
$doc = $collection->update(
array(
'$set' => array(
'_id' => new MongoId(),
'organization' => $mysql_org_name,
'purch_code' => $mysql_purch_code,
'contentname' => $mysql_order_item_name,
array('upsert' => true)
)
)
);
}
}
Обновление ожидает 3 массива аргументов. Вы только прошли один.
Во-первых, вы включили ваши варианты как часть $set
массив. Они должны быть переданы в качестве отдельного аргумента после условия обновления.
Кроме того, у вас нет критериев соответствия (т. Е. Оператор запроса для выбора элемента (ов) для обновления). При использовании upsert и $set
новый элемент будет создан с полями из обоих массивов (см. соответствующую документацию).
Наконец, если вы не укажете значение для _id
Монго сгенерирует один для вас.
Если, например, вы хотите сопоставить на основе organization
поле:
if(isset($_POST)){
if($array){
$doc = $collection->update(
array('organization' => $mysql_org_name),
array(
'$set' => array(
'purch_code' => $mysql_purch_code,
'contentname' => $mysql_order_item_name,
)
),
array('upsert' => true)
);
}
}
Если это соответствует одной или нескольким записям, только purch_code
а также contentname
поля будут обновлены в первом подходящем объекте (чтобы обновить несколько записей, вам нужно будет указать 'multiple'=>true
в вашем массиве опций). Если ничего не совпадает, новая запись будет вставлена с:
_id
organization
)purch_code
а также contentname
)У вас есть переменная $, указанная в одинарных кавычках
‘$ set’ => array (