Я очень новичок в Couchbase и NoSQL.
Я пытаюсь использовать Couchbase для хранения длинного списка идентификаторов, которые генерируются в течение сеанса пользователя.
Каждый идентификатор хранится по одному, поэтому я не могу создать документ с несколькими значениями. Итак, в PHP это должно быть сделано путем создания отдельного документа CB для каждого идентификатора или есть способ вставить новую строку в этот существующий документ? Вот как бы я сделал это в MySQL
Я предполагаю, что я могу сначала создать документ, используя что-то вроде этого:
$doc = array(
'id' => '123'
);
$connection->set("s_591", json_encode($doc));
а затем обновить этот же документ, добавив в массив, который уже существует в документе.
Если вы хотите хранить идентификаторы только для каждого пользовательского сеанса, то наиболее эффективным способом будет использование присоединять метод API Couchbase. Добавить, поскольку имя подразумевает работу со строками, а не с документами JSON, поэтому вам не нужно извлекать объект, обновлять и сохранять его обратно в Couchbase; вы только посылаете строку, которая будет добавлена на сервер, а Couchbase добавляет ее к существующей строке атомарно. Чтобы получить все идентификаторы, просто получите объект (который является строкой) и разделите его в соответствии с разделителем.
Итак, чтобы сохранить идентификатор «123» для пользовательской сессии «s_591»:
$connection->append("s_591", "123" . ";");
Чтобы вернуть все идентификаторы:
$str = $connection->get("s_591");
$ids = explode(";", $str);
Других решений пока нет …