2015-08-08 69 views
0

如何批量更新mongoDB與數組。如何批量更新具有不同值的數組mongoDB

我需要一次更新大約幾十個文檔的文檔。

我可以用mongoid進行批量更新嗎?

我試過以下方法,

但它沒有奏效。

我得到這個錯誤NoMethodError: undefined method爲#`更新」

示例代碼

tickets = [100,000 items] 

updated_flights = [] 
tickets.each do |tik| 
    @flight = Flight.find_or_create_by(id: id, from: tik.from, to: tik.to) 
    @flight = DO_SOMETHING 
    updated_flights << @flight 
end 
Flight.collection.update(updated_flights) 

每個文檔都有不同的值進行更新

通知

我想取Flight.find_or_create_by ...的記錄,

並更改其值,然後推入數組。最後一次更新對象數組。

+0

這真的有點含糊。你想更新哪些信息?信息更新來自哪裏?它是你正在處理的列表還是靜態值?你說要找到或創建文件。那麼id值從哪裏來?是否也在該列表或其他列表中。如果你希望得到正確的答案,你需要清楚地解釋你想要做什麼。 –

回答

0

您可以在更新查詢語句中使用多關鍵字來更新多個文檔。

示例:對於特定的航班出發時間已更改。所以你想在門票中改變它。你可以這樣使用:

tickets.update({ "id" : "flight_id_to_be_update" }, { "$set" : { "departureTime" : "16:00" } }, { "multi" : true } }); 
+0

我不明白你的建議。多數民衆贊成說,我有一個對象數組更新到DB,'[對象的陣列]'。如何將其轉換爲您的解決方案。因爲看起來你只顯示一個文件不是多個 – newBike

+0

每個文件都會用不同的值更新。 – newBike

+0

我想你是在談論這個'Band.where(名字:「Photek」).update_all(標籤:「Mute」)',但我不打算這樣做。因爲每個文件都有不同的值來設置 – newBike