2011-12-24 63 views
0

「self」代表Contact模式。 此查詢將查找聯繫人的所有已完成任務。 任務模型具有字段/鍵:數組類型的assigned_contacts。 所以查詢是在數組內搜索。MongoMapper到Mongoid:如何在數組內搜索?

def assigned_tasks_completed 
    self.company.tasks.all(:assigned_contacts => self.id.to_s, :completed => true) 
end 

如何在Mongoid中做到這一點?

另一個問題: @ contact.set(:a - > a,:b - > b,:c - > c)的Mongoid中的等價物是update_attributes!

但是在Mongoid中也有一套方法。 set & update_attributes!有什麼區別!在Mongoid?

回答

0

我假設你的任務是一個單獨的文檔。所以,你可以只是where取代all,它會工作

def assigned_tasks_completed 
    self.company.tasks.where(:assigned_contacts => self.id.to_s, :completed => true) 
end 

爲了您的另外一個問題,

兩個mongoid set & update attributes是內部使用mongodb $set。但區別在於mongoid設置只接受單個字段更新,update_attributes接受多個。