MongoException: zero-length keys are not allowed, did you use $ with double quotes? MongoException: zero-length keys are not allowed, did you use $ with double quotes? symfony symfony

MongoException: zero-length keys are not allowed, did you use $ with double quotes?


I just fixed this by using the referenced object's ID instead of the reference object itself as my search term.

$_repo->findOneByCustomer($customer->getId());

EDIT:That isn't throwing the exception but it isn't actually returning anything either. I tried using new MongoId($id) as was suggested a few places (Doctrine MongoDB find by id), but that didn't work either. Finally, I found something in the full query builder that searches by references (note: this uses the object instead of the object's ID).

$dm->createQueryBuilder()->find('CantaoCustomerBundle:CustomerTags')                         ->field('customer')->references($customer)                         ->getQuery()->execute();

I feel like this should be done more simply (like you did originally), but this fix is working for me.


It could be that you're trying to persist an object private attribute.

If that's not the case a good way to debug is to shut off the zero-length key check so that you can actually debug by checking what it's being written into mongo.

zero-length keys are not allowed, did you use $ with double quotes?

Code: 1

You tried to save "" as a key. You generally should not do this. "" can mess up subobject access and is used by MongoDB internally. However, if you really want, you can set mongo.allow_empty_keys to true in your php.ini file to override this sanity check. If you override this, it is highly recommended that you set error checking to strict to avoid string interpolation errors.

http://php.net/manual/en/mongo.configuration.php#ini.mongo.allow-empty-keys