Mongomapper: конфликтует ли поле «_id» с «id»? - PullRequest
3 голосов
/ 27 января 2011

У меня есть коллекция, которая содержит поля _id и id. Когда я ищу по полю id в клиенте mongo, все в порядке. Когда я ищу модель mongomapper, например: Product.find_by_id (6) или Product.where (: id => 6), он возвращает пустой объект Plucky, и я вижу, что он ищет поле _id вместо id.

Как я понимаю, mongomapper просто всегда использует _id, независимо от того, хотите ли вы что-то найти по id.

Есть ли какая-то работа вокруг этого или я делаю это неправильно?

Ответы [ 2 ]

1 голос
/ 27 января 2011

Я считаю, что MongoMapper одинаково обрабатывает id и _id.id - это просто более дружественное представление _id.

В вашем конкретном случае, есть ли причина, по которой вам также необходимо иметь поле id?Я бы рекомендовал изменить это, особенно если есть другое более описательное имя, которое подойдет.Если вы на самом деле используете поле id в качестве уникального идентификатора (как вам это может показаться), то лучшим вариантом, вероятно, будет его сохранение в поле _id.Как вы уже знаете, это требуется для всех документов MongoDB и может быть указано вами (вашим приложением) или добавлено позже вашим драйвером вне области кода вашего приложения.

Надеюсь, чтопомогает.

0 голосов
/ 01 ноября 2011

Это может быть вызвано этой проблемой (https://github.com/jnunemaker/mongomapper/issues/195), если у вас когда-либо был экземпляр с ключом «id». Монго запоминает каждый ключ из каждого экземпляра, если вы не очистите ключ явно.

...