Upsert - php mongodb- Can't insert a new record

Viewed 1212

I'm running the following code. if the record already exists it overrides the existing fields with the new one at $updated_fields_array. But if the record doesn't exist I don't know how to add a new record with new fields ($new_fields_array). which operator should I use? Can someone help me out?

    $current_time = time();
    $current_mongo_date = new MongoDate($current_time);

    $collection = $this->mongo->selectCollection(MONGO_NOTIFY_DB, 'AccountSettings');

    $criteria_array=array("email" => $email, "name" => $name);

    $updated_fields_array = array (
        'last_sent' => $current_time,
        'updated' => $current_mongo_date
    );

    $new_fields_array = array (
        'created' => $current_mongo_date,
        'updated' => $current_mongo_date,
        'email' => $email,
        'name' => $name,
        'last_sent' => $current_time,
        'deleted' => FALSE
    );

    try {

        $collection->update(
            $criteria_array,
            array('$set' => $updated_fields_array),
            array("upsert" => true)
        );

    } catch (MongoCursorException $mce) {
        log_message('error', 'QUERY UPDATE FAILED :: AccountSettings :: ' . print_r($updated_fields_array, true) . ' :: ' . $mce->getMessage());
    }
    return;
3 Answers
Related