如何在MongoDB中创建两个文档之间的关系?

时间:2014-11-13 23:49:51

标签: ruby-on-rails mongodb mongoid

我有一个Ruby on Rails应用程序,它通常通过Mongoid gem与MongoDB通信,但出于性能原因,我需要将文档直接插入到MongoDB中,如下所示:

Order.collection.insert(Array.new << {order_id: order_id, mail_address: mail_address}) # this creates the document, but does not return anything useful that can be referenced: {"n"=>0, "connectionId"=>53675, "wtime"=>0, "err"=>nil, "ok"=>1.0}

Customer.collection.insert(Array.new << {mail_address: mail_address})

我已经定义了一个关系点,其中Customer有很多Orders,所以如果我使用Mongoid,我可以创建与customer.orders << order的关系。

但是当我不使用Mongoid时如何创建关系?

1 个答案:

答案 0 :(得分:1)

Moped的insert方法都没有返回任何对你非常有用的东西,所以你的文档在_id中得到了正常的ObjectId,但你没有简单的方法知道它们是什么。您尝试分配自己的_id但未必使用String时就走在正确的轨道上,您可以简单地说Moped::BSON::ObjectId.new来生成新的_id }}。假设您Order的{​​{1}}指向customer_id,您可以:

Customer

不要害怕使用customer_id = Moped::BSON::ObjectId.new Customer.collection.insert(_id: customer_id, mail_address: mail_address) Order.collection.insert(customer_id: customer_id, ...) shell在MongoDB中查看内部结构的内容。 Mongoid提供的所有有用的关系和嵌入式便利都很不错,但你仍然需要知道他们对你的数据库做了什么。