Je voulais le faire en deux lignes. .. J'avais aussi mongo dans mon référentiel epel existant, mais cela n'a pas fonctionné.
~~yum install --enablerepo=epel mongodb-org~~
――Vous devez utiliser correctement le référentiel officiel ――Les référentiels écrits par diverses personnes sont tamisés, vous devriez donc y aller officiellement.
Même si je peux l'installer, j'obtiens une erreur lorsque je l'exécute.
/usr/bin/mongod: symbol lookup error: /usr/bin/mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE
Il semble que ce soit EC2. Je ne vais pas changer /lib64/libpcre.so.0.0.1 ou quelque chose comme ça, il vaut donc mieux partir du référentiel http://stackoverflow.com/questions/20872774/epel-mongodb-will-not-start-on-ec2-amazon-ami
Cette fois, j'ai fait référence à la page pour Amazon Linux 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
Oui, c'est en place.
mogo
Cliquez ici pour le document officiel de la commande
https://docs.mongodb.org/manual/reference/command/
Mettre les données au format JSON dans honyarara
Au départ, il s'agit d'un DB appelé test, qui peut être commuté avec l'utilisation "dbname" Il semble que ce soit un système qui serait créé s'il n'était pas là. J'aime ce genre de chose. J'aime honyarara parce que c'est le nom de l'ensemble de données appelé Collection
db.honyarara.insert(
{
item: "test"
}
)
db.honyarara.find()
C'était en
db.honyarara.find("item":"test")
a trouvé.
quit()
mongo ressemble à du javascript L'insertion en bloc est une telle commande
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 } } } }
]
)
Je ne peux pas faire cela avec JSON, alors je décompresserai le gzip CSV et j'insérerai des dizaines de milliers d'enregistrements en cours de route.
pip install pymongo
python insert.py "filename.csv.gz"
Oh! Haya! 6 millions de caisses, mais ça se passe bien
insert.py
# coding: utf-8
import pymongo
import sys
import csv
import gzip
#Obtenir le client
client=pymongo.MongoClient()
#obtenir la base de données
db=client.test
#Acquisition de collection
mongo=db.hoge
#Le premier argument est le chemin du fichier CSV
infiename=sys.argv[1]
#Liste des noms de colonnes dans l'ordre dans lequel ils sont dans le fichier CSV
keynames=('name','age','gender')
#Insertion groupée lorsque le nombre spécifié est atteint lors de l'ajout à la liste des éléments du compteur
i=0;
items=[]
#Lors de l'ouverture du gzip
with gzip.open(infiename, 'r') as f:
#Lors de la lecture du CSV, spécifiez un délimiteur dans la partie délimiteur de
reader = csv.reader(f, delimiter=",")
for row in reader:
#Ajoutez une clé de nom de colonne aux données de chaque ligne de CSV pour créer un dictionnaire
data=dict(zip(keys,row))
#Ajouter à la liste
items.append(data)
i=i+1
#Lorsque 1000 cas sont accumulés, clignote et réinitialise
if(i%1000==0):
result=mongo.insert_many(items)
#Renvoie l'ID saisi
#print result.inserted_ids
items=[]
i=0
#S'il y a un surplus à la fin, mettez-le dans
if(i>0):
mongo.insert_many(items)