2017-10-17 105 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秒。 –

相关问题