cari

Rumah  >  Soal Jawab  >  teks badan

python - 180万的MongoDB数据,如何分割?

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

PHPzPHPz2889 hari yang lalu341

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-04-17 17:45:06

    Gunakan alatan mongo sendiri

    Gunakan alat yang disertakan bersama mongo untuk mengeksport ke format json atau cvs atau txt.

    Format

    ialah

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

    Beri saya buah berangan

    pangkalan data ialah test, collections ialah col. Data di dalam adalah seperti berikut

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

    Kini eksport secara sama rata ke dalam tiga fail.

    # 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

    Anda boleh menulis skrip dan mencubanya.

    Penjelasan: -d menentukan pangkalan data, -c menentukan koleksi, -q menentukan pertanyaan, dan format fail berikut menyokong json、cvs、txt

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 17:45:06

    Biasanya, data 180w tidak perlu dibahagikan.
    Prinsip untuk memilih kekunci Shard sebenarnya diterangkan secara terperinci dalam dokumentasi rasmi Jika anda ingin mengetahui lebih lanjut, anda mungkin ingin merujuknya.

    balas
    0
  • Batalbalas