[英]MongoDB: Bulk operation involving a collection lookup?
我的項目使用 MongoDB 和 NodeJS(使用 Mongoose)。
我有一個大的,不斷增長的集合稱為places
,每個place
都有包含GeoJSON的財產及其經/緯度坐標; 和第二個靜態zones
集合,每個zones
包含一個 GeoJSON 多邊形,指定zone
的輪廓。 我需要向每個新place
添加一個屬性matching_zones
,其中列出了與其位置相交的zone
文檔。
我目前正在通過執行以下操作的自動化任務執行此操作:
zones
屬性的places
檢索所有文檔(我正在使用StreamWorker
NodeJS 模塊,它可以讓我調整並發級別)。zones
集合中查找此place
的位置$geoIntersect
與zone
的多邊形的所有文檔。StreamWorker
它已完成處理。 這至少在更新方面效率相對較低,所以我打算修改它以使用unorderedBulkOp
進行更新,這樣我就設置了一個批量操作,每 N 個文檔我執行批量操作並開始一個新的,並且然后在處理完所有文檔后,我執行最終的批量操作。
我想知道的是:有沒有辦法在這里以某種方式將 Node 帶出循環? 我已經使用 MongoDB 聚合管道的$lookup
運算符取得了很好的效果,我想知道是否可以在更新操作中完成類似的操作。
好吧,一些進一步的挖掘和實驗使我得出結論,不,這是不可能的。 Mongo 4.2 允許您將聚合管道合並到findAndUpdate
命令中,但不支持$lookup
階段。
如果有人知道這樣做的其他一些聰明技術,我會很興奮,所以會等幾天再將其標記為正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.