2017-06-09 2 views
1

Ich habe eine Datenbank namens myDatabase und eine Sammlung namens test.Mongo-Felder aus Datei aktualisieren

Ich habe eine Datei Name.csv mit dem Inhalt unter genannt:

David

Ronaldo

Smith

Messi

Phlip

Jeremy

Sahid

Was ich tun möchte, ist:

1) Lesen von Daten aus Datei Name.csv

2) Meine Sammlung Test hat Feld namens fisrt_name die nun denselben Wert enthalten. Daher möchte ich das Feld namens Vorname mit den Namen in der obigen Datei nach dem Zufallsprinzip aktualisieren.

Was ich habe versucht, ist:

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]}});}); 

} 

Anmerkung: Ich kein Ergebnis oder Fehler aus dem obigen Skript erhalten hat

ich führen so etwas wollen:

{ "_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

Sie haben keine Wörter definiert. Zumindest nicht in der Frage. –

+0

Sorry für den Fehler, Es ist jetzt –

+0

wieder bearbeitet. 'name' wäre wahrscheinlich nur eine lange Zeichenfolge. Sie müssten auf das Komma "," oder etwas aufteilen. Sie wissen, dass es eine Upsert-Option in [mongoimport] gibt (https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mode). Da ist der Link. Es wäre wahrscheinlich sauberer, das einfach zu benutzen, anstatt es in der Shell zu versuchen. –

Antwort

0

Ohne Skript, von der Mongo-Konsole, kann man diesen Weg versuchen

mongoimport -d -c --type csv --file --headerline

In diesem Befehl die

Statt < ..> Werte mit Ihren erforderlichen Daten ersetzen, wird es Test

statt es sein wird/home/milan/Desktop/Names.csv

meinedb -> Bitte geben Sie den Namen der Datenbank

1

Wir mongo Datenbank aus der Datei auf diese Weise aktualisieren:

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" } 

Wenn mehr ObjectId als die Daten in der Datei vorhanden sind, beginnt sie erneut von Anfang an zu iterieren.

Hinweis: Das Speichern der Datei in .csv erzeugt ein Problem. Daher speicherte ich die Datei im Editor und nannte sie Name.

Verwandte Themen