如何合并导入为CSV文件的mongoose中的两个集合?

时间:2015-03-10 02:10:59

标签: node.js mongodb csv mongoose

我提出了以下两个集合的合并,并在mongoimport之后运行一次。在此步骤之后,有一个node.js应用程序(API)仅使用组合的"列表"集合,添加了媒体数组字段。
是否有更清洁的解决方案?
有没有办法使用人口加入他们?架构将如何?

以下用例:

  • Windows基础应用程序输出两个CSV文件(每晚,覆盖现有文件)
  • 之后通过预定的.bat文件自动导入

mongoimport -d products -c list --type csv --file list.csv --headerline --drop
mongoimport -d products -c media --type csv --file media.csv --headerline --drop

列表集合的文档字段

{

  "_id": ObjectId("22fa69t3cac4567dd05dd134"),

  "Type": "Centrifuge",
  
"Model": "XL-12",
  
"Price":123000,

  "SourceKey": NumberLong(85703549)
  
… bunch of more fields

} 

… up to 1000 documents

媒体收藏的文档字段

{
    "_id" : ObjectId("54fa69f1cac4246dd05dd146"),
    "MediaURL" : "http://media.random.org/media4/0F84881B-4B4B-4793-B2A2-7CB1237B35A1.jpg",
    "ClassSourceKey" : NumberLong(85703549)

},{
    "_id" : ObjectId("54fa69f1cac4246dd05dd158"),
    "MediaURL" : "http://media.random.org/media4/5D16660E-4FAF-4CC6-9AA5-8DFF5B1EA9EE.jpg",

    "ClassSourceKey" : NumberLong(85703549)

},{

    "_id" : ObjectId("54fa69f1cac4246dd05dd159"),
    "MediaURL" : "http://media.random.org/media12/CD8B1BFB-7807-4520-975B-8F059ABD379B.jpg",
    "ClassSourceKey" : NumberLong(85703549)

},

… up to a 100 documents for each product.

SourceKey与ClassSourceKey相关联


list
    .find({},
    {
        DateListingContract: true,
        StreetNumber: true,
        StreetName: true,
        City: true,
        State: true,
        PostalCode: true,
        ListPrice: true,
        Type: true,
        Model: true,
        SquareFootageStructure: true,
        SourceKey: true
    })
    .sort({ListPrice: -1})
    .exec(function (err, products) {
        if (err) throw err;
        async.eachSeries(products, function(item,callback){
            media.find({ ClassSourceKey : item.SourceKey }, function(err, images){
                if(images.length) {
                    list.update({_id: item.id}, {Media: images}, function (err) {
                        if (err) throw err;
                    });
                } else {
                    list.remove({_id: item.id}, function (err) {
                        if (err) throw err;
                    });
                }
                callback();
            }, function(err){
                if(err) throw err;
            });
        });
    });

0 个答案:

没有答案