Предполагая, var friend = { firstName: 'Harry', lastName: 'Potter' };
Есть два варианта:
Обновление модели в памяти и сохранение (простой javascript array.push):
person.friends.push(friend);
person.save(done);
или
PersonModel.update(
{ _id: person._id },
{ $push: { friends: friend } },
done
);
Я всегда стараюсь и выбираю первый вариант, когда это возможно, потому что он будет уважать больше преимуществ, которые дает вам мангуст (крючки, проверка и т. д.), ,
Однако, если вы делаете много одновременных записей, вы столкнетесь с условиями гонки, в результате чего вы столкнетесь с неприятными ошибками версий, чтобы остановить вас от замены всей модели каждый раз и потерять предыдущего добавленного вами друга , Так что только переходите к последнему, когда это абсолютно необходимо.
Это зависит от Вашего случая: при попытке сделать что-то довольно основное (например: ищите строку, замените подстроку чем-то еще), тогда регулярные строковые функции являются способом пойти. Если Вы хотите сделать что-то более сложное (например: поиск IP-адресов), тогда функции Regex являются определенно лучшим выбором.
я не представил regexes, таким образом, я не могу сказать, что они будут быстрее во времени выполнения, но я могу сказать Вам, что дополнительное время потратило взламывание вместе, эквивалентное использование основных функций не будет стоить того.
<час>Редактирование с новой информацией в OP:
Это звучит, как будто на самом деле необходимо сделать много маленьких строковых операций здесь. Так как каждый индивидуально является довольно основным, и я сомневаюсь, что Вы были бы в состоянии сделать все те шаги (или даже несколько тех шагов) когда-то использование regex, я пойду с основными функциями:
Захват первая половина (на основе третьего местоположения подстроки "000000") и сравнивают ее хеш со следующими 20 байтами, выбрасывая что-нибудь.
Использование: strpos()
и substr()
Или: /$(.*?0{6}.*?0{6}.*?)0{6}/
Тогда захватывают следующие 19 байтов после этого и разделяют это на 8 (встряхните 1), и 8.
Использование: substr()
- (я принимаю, Вы имеете в виду 17 байтов здесь - 8 + 1 + 8)
$part1 = substr($myStr, $currPos, 8);
$part2 = substr($myStr, $currPos + 9, 8);
Я думаю, хотите ли Вы самую высокую производительность, необходимо избежать regex, поскольку это помогает минимизировать усилие, но не будет иметь лучшей производительности, поскольку можно почти всегда корректировать код с помощью строковых стандартных программ для определенной проблемы и получать большое повышение производительности его. Но для простых стандартных программ парсинга, которые не могут быть оптимизированы очень, можно все еще использовать regex, поскольку он не будет иметь большое значение там.
РЕДАКТИРОВАНИЕ: Для этой определенной проблемы, которую Вы отправили, я буду favorize строковые операции, но только потому, что я не знал бы, как сделать это в regex. Это, кажется, довольно просто, за исключением хеша, таким образом, я думаю, что функции regex/string не будут иметь большое значение.
Я полагаю, что существует порог, от которого регулярное выражение быстрее, чем набор вызовов строковой функции PHP. Так или иначе, во многом зависит от того, что Вы делаете. Необходимо узнать баланс.
Теперь, когда Вы отредактировали свой вопрос. Я использовал бы строковые функции для того, что Вы пытаетесь выполнить. ремни для правки бритв () и substr () - то, что приходит на ум на первый взгляд.
В целом строковые функции быстрее, и функции regex более гибки.
Как с чем-либо еще, Ваши результаты могут варьироваться, единственный способ знать наверняка состоит в том, чтобы попробовать его оба пути и сравнительный тест.
Если то, что Вы делаете, вообще разумно, чтобы сделать строковые функции использования, необходимо использовать их. Как, если Вы определяете, происходит ли постоянная строка 'abc'
в $value
, Вы определенно хотите проверить strpos($value, 'abc') !== false
, не preg_match('/abc/', $value)
. При находке большой строковой перестановки и преобразований для выполнения то, что Вы имели бы с regex, тем не менее, Вы почти наверняка собираетесь волновать уничтожение и производительность и пригодность для обслуживания.
При касаниях скорости, тем не менее, когда она сводится к нему, не думайте об этом, синхронизируйте ее. Эти time
команда является Вашим другом.
Собственные строковые функции являются путем быстрее. Преимущество regexp - то, что можно сделать в значительной степени что-либо с ними.
Зависит от Ваших потребностей. Операции наиболее регулярного выражения быстрее, чем можно было бы думать и может даже превзойти встроенные строковые функции по характеристикам в определенных тривиальных операциях. Обратите внимание, что я имею preg библиотеку в виду, не встроенную regex библиотеку, которая является довольно медленной.