2017-10-17 47 views
0

我找不到有效的解決方案來查詢我的查詢。這是我想要做的。Mongo Query:將字段+值從一個文檔複製到另一個

我有一個名爲「版本」 我有一個集合稱爲「軌道」

「發佈」有場「RELEASEDATE」集合,這是充滿了每一個「版本」的文件。

我現在想在db.tracks.releases.releaseDate (db.tracks.releases已存在,但沒有releaseDate)下的每個「tracks」文檔中擁有相應的release版本。

找到對應的RELEASEDATE, 「發佈」 和 「軌道」 都有一個ICPN號:

db.releases.icpn db.tracks.releases.icpn

那些可以進行比較發現每個曲目的正確發行日期。

總結: 我需要通過每個軌道,看看ICPN,使用相同的ICPN搜索發行版,並將releaseDate從發行版複製到曲目。

我只能讓它像這樣的工作:

db.releases.find()的forEach(函數(DOC){

db.tracks.update( 


       { "releases.0.ICPN" : doc.ICPN}, 
       { 
        $set: { "releases.0.releaseDate": doc.releaseDate}, 
        $currentDate: {"lastModified": true} 
       }, 
       { multi: true} 

      )  

})

,對於我的測試工作。 DB,但是對於每個單一發行版來說,通過每個曲目都是非常低效的。

你有什麼提示讓我走上正軌嗎?

親切的問候, 亞歷

回答

0

目前該查詢只查找文檔,其中在發佈的第一個元素是ICPN

你想不喜歡絕對索引查詢:

和更新與位置運營商,因此它更新它發現匹配的一個:

$set: { "releases.$.releaseDate": doc.releaseDate}, 
+0

好的,我明白了。它在那裏完全困惑。 –

+0

(刪除評論) –

0

好吧,查詢現在部分工作,但是在編輯1700首曲目(160000)之後停止,但我將multi設置爲true,所有其他曲目/發行版的條件爲真(如果ICPN匹配,我手動檢查了一些未修改的曲目) 。

+0

我不得不增加shell執行時間。默認僅15秒。 –

相關問題