我正在使用mongify将mysql数据库迁移到mongodb。
这样做,出现了两个问题:
1-如何声明我的翻译文件,以便有一个嵌入的id引用数组(存储在不同的集合中并可以通过populate检索),而不是仅仅嵌入为json对象。
2-嵌入对象可以具有唯一的id作为colections中的对象吗?在其他项目中,我使用该方法来查询嵌入对象,但如果该id不存在,我应该使用不同的字段。
答案 0 :(得分:0)
不幸的是,目前Mongify无法提供第一个请求,它需要一个自定义脚本来执行此操作。 如果您想将翻译文件发送给我,我可以给您更多详细信息(确保删除任何敏感数据)。
对于第二个,嵌入对象将获得唯一的ID。你不需要做任何特别的事情。
希望能回答你的问题。
答案 1 :(得分:0)
是不可能的,但在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")
]
}