2016-08-11 10 views
0

は、以下のように:私のローカル環境でのドロップとマングースのMongoDBでインデックスを作成するためにどのようにデータをインポート中に一意のキーインデックスをリセットしようとしている

const importData = function() { 
    UserLocation.collection.dropAllIndexes((err) => { 
    if (err) { 
     console.trace(err); 
     return; 
    } 
    UserLocation.collection.createIndex({ 
    Adfrom: 1, 
    Adpto: 1 
    }, { 
    unique: true 
    }); 

    fs.createReadStream(`${__dirname}/../data/import-data.csv`).pipe(parser); 
    }); 
}; 

その作業罰金が、私はこのコードを展開するとき私はdropIndexのためにmongodb接続エラーを表示しています。

Error: 
Mongoose default connection to mongodb://localhost:27017/userlocation disconnected 
Mongoose default connection error: MongoError: connect ECONNREFUSED 127.0.0.1:27017 

この問題を解決する方法。

助けてください!

おかげ

+0

エラーログを追加できますか? – jerry

+0

あなたのmongoサーバは動作していますか? mongoサーバーのログも確認できますか?モンゴの切断が起こったように見える。 – jerry

+0

はい、実行中です。私はドロップなしでのみインポートする/インデックスを作成するときにエラーなしで動作しています。私は問題がModel.collection.dropAllIndexesとModel.collection.createIndexであると思います。 – Srinivas

答えて

1

あなたは

db.collection.dropIndex("//field of which you want to drop index") 

それとも、それが値を持つフィールドのインデックスをドロップします-1インデックス仕様書

db.collection.dropIndex({ "//field of which you want to drop index" : -1 }) 

を使用することができることにより、インデックスを削除することができます。

コレクションはあなたのテーブルの名前になります。

たとえば、

db.pets.dropIndex({ "cat" : -1 }) 

インデックスを作成するためにSimirlarly、あなたはCreate Indexをすばやく見ることができます。

これらのコマンドは、mongoシェルで実行できます。

+0

私はmongooseモデルオブジェクトでdb.collectionを使用できません。これはUserLocation.dropIndex()のようなものです。 – Srinivas

+0

これらのコマンドはあなたのmongoシェル用であり、モデルファイルには含まれていません。 私は毎回ではなく特定の状況でインデックスを削除する必要があるかもしれないと考えてこれを提案しました。 –

関連する問題