2017-06-09 11 views
1

私は、myDatabaseという名前のDBとtestというコレクションを持っています。ファイルからMongoフィールドを更新する

デビッド

ロナウド

スミス

メッシ

Phlip

ジェレミー

私は、下記の内容でName.csvと呼ばれるファイルを持っています私がやりたい何

サヒド

は次のとおりです。

1)は、ファイルからデータを読み込みName.csv

2)私のコレクションのテストになりました同じ値が含まれているフィールドと呼ばれるfisrt_nameを持っています。ですから、first_nameという名前のフィールドを上記のファイルの名前でランダムに更新したいと思います。

私は何をしようとしたことは次のとおりです。

use myDatabse 

var file = cat('/home/milan/Desktop/Names.csv'); // read the file 

var name = file.split('\n'); // create an array 

for (var i = 0, l = name.length; i < l; i++){ 

    db.test.find().forEach(function(doc){db.test.update({_id:doc._id}, {$set:{"first_name":name[i]}});}); 

} 

注:私はこのような何かを引き起こすたい上記のスクリプトから

を任意の結果やエラーを取得できませんでした:

{ "_id" : ObjectId("141491ee909f1a779b467cbb"), "first_name" : "David" } //first name from file 

{ "_id" : ObjectId("141491ee909f1a779b467ccc"), "first_name" : "Ronaldo" } // Second name from file 

{ "_id" : ObjectId("141491ee909f1a779b467cdd"), "first_name" : "Smith" } // third name from file 
+0

あなたは '単語'を定義していません。少なくとも質問にはならない。 –

+0

間違いの申し訳ありません、今編集されました –

+0

再び。 'name'は恐らく一つの長い文字列にすぎません。カンマ '、'などで分割する必要があります。 [mongoimport](https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mode)にupsertオプションがあります。リンクがあります。おそらくシェルでこれを試してロールするのではなく、それを使用するほうがきれいでしょう。 –

答えて

0

スクリプトを使用せずに、mongoコンソールから、この方法を試すことができます

mongoimport -d -c --type CSVは、このコマンドで--headerline

--file

代わりに、それがされるのそれはテストになります、あなたに必要なデータの代わりに

で< ...>値を置き換える/ホーム/ミラノ/デスクトップ/ Names.csv

MYDB - >データベース名に与えてください

私たちは、このようにファイルからのmongoデータベースを更新することができ
1

use myDatabase 

var file = cat('/sample data/contact/Name'); // read the file 

var words = file.split('\n'); // create an array of words 

var totalContacts = db.test.count(); 

for (var i = 0, j = 0; i< totalContacts ; i++,j++){ 

    if(j < words.length){ 

    db.crm.test.find().skip(i).limit(1).forEach(function(doc) 

{ 
db.crm.test.update({_id:doc._id}, {$set:{'first_name':words[j]}});}); 

} 
else 

{ 

j = 0; 

i = i -1; 

} 

} 

This gives exactly this result: 

{ "_id" : ObjectId("141491ee909f1a779b467cbb"), "first_name" : "David" } 

{ "_id" : ObjectId("141491ee909f1a779b467ccc"), "first_name" : "Ronaldo" } 

{ "_id" : ObjectId("141491ee909f1a779b467cdd"), "first_name" : "Smith" } 

ファイル内のデータより多くのObjectIdが存在する場合は、最初から反復を開始します。

注:.csvにファイルを保存すると問題が発生するので、メモ帳からファイルを保存し、名前を付けました。

関連する問題