Существуют времена, когда фильтрация (или использование фильтра или понимания списка) не работают. Это происходит, когда некоторый другой объект содержит ссылку на список, Вы изменяете, и необходимо изменить список на месте.
for name in names[:]:
if name[-5:] == 'Smith':
names.remove(name)
единственной разницей от исходного кода является использование names[:]
вместо names
в для цикла. Тем путем код выполняет итерации по (мелкой) копии списка и работы удалений как ожидалось. Так как список, копирующий, мелок, это довольно быстро.
Вам может помочь Центр языков PHP MongoDB . Есть ссылки на несколько библиотек PHP для MongoDB, включая централизованное средство ведения журнала для приложений Symfony.
AFAIK, единственная структура, в которой интегрирована поддержка Mongo, - это Vork .
I видел сообщение от кого-то, кто модифицировал Cake для использования MongoDB, но им в основном пришлось переделать всю модель-движок.
Попробуйте создать свой проект с флагом no-orm. Нет необходимости иметь объектно-реляционную базу данных, если вы не используете реляционную базу данных. Просто создайте классы для своих данных на PHP. Они будут работать как ваша схема, что имеет смысл, поскольку схема не определена на уровне данных.
Существует DoctrineMongoDBBundle для использования с Symfony 2
Вы также можете проверить http://li3.me/, единственный PHP-фреймворк с полным стеком и полностью интегрированной поддержкой MongoDB (и CouchDB).