Mongo Query:将字段+值从一个文档复制到另一个文档

时间:2017-10-17 14:41:00

标签: javascript mongodb

我无法找到有效的查询解决方案。这就是我想做的事。

我有一个名为“发布”的集合 我有一个名为“track”的集合

“releases”具有“releaseDate”字段,该字段为每个“release”文档填充。

我现在想在db.tracks.releases.releaseDate下的每个“track”文档中都有相应的releasedate“releases” (db.tracks.releases已经存在,但没有releaseDate)。

要找到相应的releaseDate,“releases”和“tracks”都有一个ICPN编号:

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

可以比较那些以找到每个音轨的正确releaseDate。

总结一下: 我需要浏览每个轨道,查看ICPN,使用相同的ICPN搜索发行版,并将releaseDate从发行版复制到轨道。

我只能让它像这样工作:

db.releases.find()。forEach(function(doc){

db.tracks.update(   


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

            )    

})

这适用于我的测试数据库,但是每个版本的每个音轨都非常低效。

你有什么提示让我走上正轨吗?

亲切的问候, 亚历

2 个答案:

答案 0 :(得分:0)

目前,该查询仅查找docs中第一个元素为ICPN

的文档

您想要在没有绝对索引的情况下进行查询,如:

{ "releases.ICPN" : doc.ICPN}

并使用位置运算符进行更新,以便更新找到的匹配项:

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

答案 1 :(得分:0)

好吧,查询现在部分有效,但是在编辑了1700首曲目(160000)之后就停止了,虽然我将multi设置为true并且所有其他曲目/释放的条件为true(如果ICPN匹配,我会手动检查一些未修改的曲目)。