更新数组mongodb中的嵌套对象键

时间:2019-07-05 06:11:20

标签: node.js mongodb

我有一个包含重复项的数据库,我试图与一个脚本合并,该脚本也合并了对这些重复项的引用。引用存储在数组中的对象中。

列出的两个集合的架构为:

主要:

-name (string)
-_id (ObjectId)

参考

-_id (ObjectId)
-name (string)
-references (Object) ----{
      ref (references Main._id)
 }

我的脚本当前如下所示:

db.collection('Main').find().toArray().then(async docs => {
    for(const doc of docs) {
        if(done[doc._id.toString()]) {
            console.log(doc.name);
            continue;
        }
        else {
            const dups = await db.collection('Main').find({name: doc.name}).toArray();
            if(dups.length > 1) {
                for(const dup of dups) {
                    const res = await db.collection('References').updateOne({'references.ref': dup._id}, {$set: {'references.$.ref': doc._id}});
                    console.log(res.modifiedCount);
                    done[dup._id.toString()] = true; 
                }
            }
        }
    }
})

如您所见,脚本将获取主集合中的所有文档,并搜索具有相同名称的重复项。然后,它获取重复项的ID,并将其更改为该名称的第一次出现。我得到一个返回的结果,说文档已被修改,但似乎没有任何变化,当然,仍然有重复的引用(我仍未在主集合中添加删除重复项的计划,因为我打算删除所有在参考集中没有参考的文档中,可以清除不必要的文档。

有人可以帮助我确定我的查询出了什么问题,从而使它无法更新参考文献集中文档中的ref键吗?

0 个答案:

没有答案