簡體   English   中英

MongoDB:涉及集合查找的批量操作?

[英]MongoDB: Bulk operation involving a collection lookup?

我的項目使用 MongoDB 和 NodeJS(使用 Mongoose)。

我有一個大的,不斷增長的集合稱為places ,每個place都有包含GeoJSON的財產及其經/緯度坐標; 和第二個靜態zones集合,每個zones包含一個 GeoJSON 多邊形,指定zone的輪廓。 我需要向每個新place添加一個屬性matching_zones ,其中列出了與其位置相交的zone文檔。

我目前正在通過執行以下操作的自動化任務執行此操作:

  1. 從流中還沒有zones屬性的places檢索所有文檔(我正在使用StreamWorker NodeJS 模塊,它可以讓我調整並發級別)。
  2. 對於每個文檔,在zones集合中查找此place的位置$geoIntersectzone的多邊形的所有文檔。
  3. 更新文檔並告訴StreamWorker它已完成處理。

這至少在更新方面效率相對較低,所以我打算修改它以使用unorderedBulkOp進行更新,這樣我就設置了一個批量操作,每 N 個文檔我執行批量操作並開始一個新的,並且然后在處理完所有文檔后,我執行最終的批量操作。

我想知道的是:有沒有辦法在這里以某種方式將 Node 帶出循環? 我已經使用 MongoDB 聚合管道的$lookup運算符取得了很好的效果,我想知道是否可以在更新操作中完成類似的操作。

好吧,一些進一步的挖掘和實驗使我得出結論,不,這是不可能的。 Mongo 4.2 允許您將聚合管道合並到findAndUpdate命令中,但不支持$lookup階段。

如果有人知道這樣做的其他一些聰明技術,我會很興奮,所以會等幾天再將其標記為正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM