CSV, содержащий следующие строки импортируется в MongoDB с помощью CSV с помощью инструмента mongoimport:Рельсы/Mongoid: Объект Родитель не признает ребенка has_many/belongs_to связи после того, как mongoimport
object_1_id,field1,field2
52db7f026956b996a0000001,apples,oranges
52db7f026956b996a0000001,pears,plums
Поля импортируемого в коллекцию Object2
.
После импорта строки подтверждают существование через консоль.
#<Object2 _id: 52e0713417bcabcb4d09ad12, _type: nil, field1: "apples", field2: "oranges", object_1_id: "52db7f026956b996a0000001">
#<Object2 _id: 52e0713517bcabcb4d09ad76, _type: nil, field1: "pears", field2: "plums", object_1_id: "52db7f026956b996a0000001">
Object2
может получить доступ к Object1
через object_1_id
:
> o = Object2.first
#<Object2 _id: 52e0713417bcabcb4d09ad12, _type: nil, field1: "apples", field2: "oranges", object_1_id: "52db7f026956b996a0000001">
> o1 = o.object_1
#<Object1 _id: "52db7f026956b996a0000001", other_fields: "text and stuff">
Но Object1
не может видеть любой из Object2
строк, которые были импортированы с mongoimport. Он может видеть все строки, которые были созданы с помощью консоли или других средств:
> o1.object_2s.count
10
> o1.object_2s.find("52e0713417bcabcb4d09ad12")
Mongoid::Errors::DocumentNotFound:
Document not found for class Object2 with id(s) 52e0713417bcabcb4d09ad12.
TL; DR Object1
не появляется распознавать дочерние модели, импортированные через mongoimport, несмотря на ребенок правильно хранить родительский ID и возможность для идентификации своего родителя.
Возможно, ваш импорт испортил типы? Обратите внимание, что идентификаторы Object1 отображаются в кавычках (предполагая, что они являются строками), тогда как идентификатор Object2 отображается без кавычек (предполагая, что это объект BSON ObjectId). Проверьте из оболочки MongoDB и посмотрите, получаете ли вы «52db7f026956b996a0000001» или 'ObjectId (« 52db7f026956b996a0000001 »)'. –