使用mongify进行迁移

时间:2014-09-25 00:15:35

标签: node.js mongodb migration embedding nosql

我正在使用mongify将mysql数据库迁移到mongodb。

这样做,出现了两个问题:

1-如何声明我的翻译文件,以便有一个嵌入的id引用数组(存储在不同的集合中并可以通过populate检索),而不是仅仅嵌入为json对象。

2-嵌入对象可以具有唯一的id作为colections中的对象吗?在其他项目中,我使用该方法来查询嵌入对象,但如果该id不存在,我应该使用不同的字段。

2 个答案:

答案 0 :(得分:0)

不幸的是,目前Mongify无法提供第一个请求,它需要一个自定义脚本来执行此操作。 如果您想将翻译文件发送给我,我可以给您更多详细信息(确保删除任何敏感数据)。

对于第二个,嵌入对象将获得唯一的ID。你不需要做任何特别的事情。

希望能回答你的问题。

答案 1 :(得分:0)

来自mongify的

是不可能的,但在mongodb中你可以按如下方式转换数据:

//find posts has array of objects    
db.getCollection('posts').find({'_tags.0': {$exists: true}}).forEach( function (post) {
    var items = [];
    var property = '_tags';
    post[property].forEach(function(element){
        if(element._id !== undefined){
            items.push(element._id);
        }
    });
    if(items.length>0){
        post[property] = items;
        db.posts.update({_id:post._id},post);
    }
});

来源文件:

{
    "_id" : ObjectId("576aa0389863482f64051c81"),
    "id_post" : 130155,

    "_tags" : [ 
        {
            "_id" : ObjectId("576a9efd9863482f64000044")
        }, 
        {
            "_id" : ObjectId("576a9efd9863482f6400004b")
        }, 
        {
            "_id" : ObjectId("576a9efd9863482f64000052")
        }, 
        {
            "_id" : ObjectId("576a9efd9863482f6400005a")
        }
    ]
}

最终文件:

{
    "_id" : ObjectId("576aa0389863482f64051c81"),
    "id_post" : 130155,

    "_tags" : [ 
        ObjectId("576a9efd9863482f64000044"), 
        ObjectId("576a9efd9863482f6400004b"), 
        ObjectId("576a9efd9863482f64000052"), 
        ObjectId("576a9efd9863482f6400005a")
    ]
}