我有一个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时如何创建关系?
答案 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提供的所有有用的关系和嵌入式便利都很不错,但你仍然需要知道他们对你的数据库做了什么。