Ich wollte es in zwei Zeilen machen. .. Ich hatte auch Mongo in meinem vorhandenen Epel-Repository, aber es hat nicht funktioniert.
~~yum install --enablerepo=epel mongodb-org~~
――Sie sollten das offizielle Repository ordnungsgemäß verwenden ――Die von verschiedenen Personen geschriebenen Repositories werden gesiebt, daher sollten Sie offiziell gehen.
Selbst wenn ich es installieren kann, wird beim Ausführen eine Fehlermeldung angezeigt.
/usr/bin/mongod: symbol lookup error: /usr/bin/mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE
Es scheint EC2 zu sein. Ich werde /lib64/libpcre.so.0.0.1 oder so nicht ändern, also ist es besser, aus dem Repository zu gehen http://stackoverflow.com/questions/20872774/epel-mongodb-will-not-start-on-ec2-amazon-ami
Diesmal habe ich auf die Seite für Amazon Linux verwiesen https://docs.mongodb.org/manual/tutorial/install-mongodb-on-amazon/
sudo vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=0
sudo yum install -y --enablerepo=mongodb mongodb-org
sudo service mongod start
Ja, es ist vorbei.
mogo
Klicken Sie hier für das offizielle Dokument des Befehls
https://docs.mongodb.org/manual/reference/command/
Daten im JSON-Format in Honyarara einfügen
Anfangs handelt es sich um eine Datenbank namens test, die mit "dbname" umgeschaltet werden kann. Es scheint ein System zu sein, das gemacht würde, wenn es nicht da wäre. Ich mag so etwas. Ich mag Honyarara, weil es der Name des Datensatzes namens Collection ist
db.honyarara.insert(
{
item: "test"
}
)
db.honyarara.find()
Es war in
db.honyarara.find("item":"test")
gefunden.
quit()
Mongo fühlt sich an wie Javascript Masseneinfügung ist ein solcher Befehl
db.collection.bulkWrite(
[
{ insertOne : { "document" : { name : "sue", age : 26 } } },
{ insertOne : { "document" : { name : "joe", age : 24 } } },
{ insertOne : { "document" : { name : "ann", age : 25 } } },
{ insertOne : { "document" : { name : "bob", age : 27 } } },
{ updateMany: {
"filter" : { age : { $gt : 25} },
"update" : { $set : { "status" : "enrolled" } }
}
},
{ deleteMany : { "filter" : { "status" : { $exists : true } } } }
]
)
Ich kann das mit JSON nicht machen, also entpacke ich das CSV-GZIP und füge Zehntausende von Datensätzen in die Mitte ein.
pip install pymongo
python insert.py "filename.csv.gz"
Oh! Haya! 6 Millionen Fälle, aber es läuft gut
insert.py
# coding: utf-8
import pymongo
import sys
import csv
import gzip
#Holen Sie sich Client
client=pymongo.MongoClient()
#Datenbank abrufen
db=client.test
#Sammlungserwerb
mongo=db.hoge
#Das erste Argument ist der CSV-Dateipfad
infiename=sys.argv[1]
#Liste der Spaltennamen in der Reihenfolge, in der sie sich in der CSV-Datei befinden
keynames=('name','age','gender')
#Masseneinfügung, wenn die angegebene Anzahl erreicht ist, während zur Liste der Zählerelemente hinzugefügt wird
i=0;
items=[]
#Beim Öffnen des gzip
with gzip.open(infiename, 'r') as f:
#Geben Sie beim Lesen der CSV ein Trennzeichen im Trennzeichenteil von an
reader = csv.reader(f, delimiter=",")
for row in reader:
#Fügen Sie den Daten in jeder CSV-Zeile einen Spaltennamenschlüssel hinzu, um ein Wörterbuch zu erstellen
data=dict(zip(keys,row))
#Zur Liste hinzufügen
items.append(data)
i=i+1
#Wenn 1000 Fälle akkumuliert sind, blinken und zurücksetzen
if(i%1000==0):
result=mongo.insert_many(items)
#Gibt die eingegebene ID zurück
#print result.inserted_ids
items=[]
i=0
#Wenn es am Ende einen Überschuss gibt, setzen Sie ihn ein
if(i>0):
mongo.insert_many(items)