$ oid является недопустимым ключом в MongoDB - PullRequest
0 голосов
/ 17 апреля 2019

Я несколько раз сталкивался (и был озадачен) с этой ошибкой в ​​приложениях Rails, когда пытался сохранить некоторые данные в поле Hash с использованием MongoID:

'$oid' is an illegal key in MongoDB

Я не отправляю данные с ключом $oid в хеш, поэтому не могу понять, что его вызывает.

1 Ответ

1 голос
/ 17 апреля 2019

Оказывается, проблема в том, что я использую поле id другого объекта в одном из этих хэшей.Поле id объектов MongoID - это не строки, а BSON::ObjectID s, поэтому, если вы попытаетесь вставить их в хеш, как показано ниже:

ObjectWithHash.update(hash_field: {name: a_name, id: other_object.id})

MongoId попытается преобразовать other_object.id в формат Hashи получите {"$oid" => "......."}, что приведет к появлению ошибки.

Чтобы решить эту проблему, вы можете сначала преобразовать ее в строку и сохранить: other_object.id.to_s

...