doc-per-cart или doc-per-item являются хорошими вариантами, и ни один документ не звучит так, как будто бы он стал очень большим (кодирование / декодирование JSON медленнее для очень больших документов, и они должны полностью храниться в памяти). В целом, я бы предпочел документ по каждому пункту. Конечно, вам нужно будет создать (простое) представление для отображения корзины, если вы использовали doc-per-item.
Одной из веских причин отдавать предпочтение документам на каждую вещь является MVCC от CouchDB. Добавление товара в корзину всегда создает новый документ, поэтому вам не нужно знать текущий _rev предмета. Когда пользователь хочет удалить элемент, у вас есть _id и _rev, и вы можете легко удалить его. Если вы использовали doc-per-cart, вы будете постоянно обновлять документ, который требует, чтобы у вас всегда был текущий _rev.
Обратите внимание, что doc-per-item разрешит дубликаты в вашей корзине (пользователь нажимает «Обновить» и делает два добавления вместо одного), но пока отображение корзины показывает это, и на последней странице оформления заказа тоже, Я думаю, что это разумный режим отказа.