python - 180万的MongoDB数据,如何分割?
PHPz
PHPz 2017-04-17 17:43:06
0
2
338

写了个采集爬虫,采集了大概180万条URL,现在要给它平均分割成多份,然后保存文件。
请问要怎么做比较好。

PHPz
PHPz

学习是最好的投资!

répondre à tous(2)
黄舟

Utilisez les propres outils de Mongo

Utilisez l'outil fourni avec mongo pour exporter au format json ou cvs ou txt.

Le format

est

mongoexport --db {dbname} --collection {collectionname} --out traffic.json

Donnez-moi une châtaigne

la base de données est test, collections est col. Les données à l'intérieur sont les suivantes

> db.col.find().pretty()
{
    "_id" : ObjectId("573173ce83358fa60470e0db"),
    "id" : 1,
    "name" : "adamweixuan"
}
{
    "_id" : ObjectId("573173e983358fa60470e0dc"),
    "id" : 2,
    "name" : "nicholas"
}
{ "_id" : ObjectId("573173f383358fa60470e0dd"), "id" : 3, "name" : "test" }
{
    "_id" : ObjectId("5731740383358fa60470e0de"),
    "id" : 4,
    "name" : "test001"
}
{
    "_id" : ObjectId("5731740a83358fa60470e0df"),
    "id" : 5,
    "name" : "test002"
}
{
    "_id" : ObjectId("5731741283358fa60470e0e0"),
    "id" : 6,
    "name" : "test003"
}

Exportez maintenant également dans trois fichiers.

# id 不大于2的
mongoexport --port 10510 -d test -c col -q '{id : {$lte:2}}' --out ./names1.txt

# id 在2和4之间的
mongoexport --port 10510 -d test -c col -q '{id : {$gt:2} , id :{$lte:4}}' --out ./names2.txt

# id大于4的
mongoexport --port 10510 -d test -c col -q '{id : {$gt:4}}' --out ./names3.txt

Vous pouvez écrire un script et l'essayer.

Explication : -d spécifie la base de données, -c spécifie la collection, -q spécifie la requête et les formats de fichiers suivants sont pris en charge json、cvs、txt

左手右手慢动作

Normalement, les données de 180 W n'ont pas besoin d'être divisées.
Les principes de sélection des clés Shard sont effectivement expliqués en détail dans la documentation officielle. Si vous souhaitez en savoir plus, vous souhaiterez peut-être vous y référer.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal