Mongoose: Penyisipan massal melalui Model.collection.insert membuat Node.js mogok dengan kesalahan Segmentasi 11

Saya memiliki 10.000.000 dokumen yang ingin saya masukkan ke dalam MongoDB.

Saya menggunakan luwak untuk membuat dokumen JSON yang diurai (JSON dibuat dengan mengubah konten banyak file txt).

Saya mulai menggunakan Model.create untuk setiap dokumen, tetapi lambat dan memerlukan beberapa hari untuk menyelesaikan operasinya. Jadi saya beralih ke Model.collection.insert untuk mempercepat.

Ini adalah fungsi saveToDB saya (ditulis dalam TypeScript):

private saveToDB(hand: Hand): void {
    this.bulkHands.push(new HandHistory(hand));

    if(this.bulkHands.length >= 10000) {
        HandHistory.collection.insert(this.bulkHands, (err): void => {
            if(err) {
                console.log('error', err);
            }

            this.bulkHands = [];
        });
    }
}

Saya mencoba kodenya dan Parser saya membuat array menjadi 10.000 dokumen dan kemudian mencoba memasukkannya ke dalam db. Tapi Node selalu crash dengan Segmentation fault: 11.

Bahkan ketika saya menetapkan batas ke 1 (memasukkan satu dokumen pada satu waktu), hal ini terjadi. Jadi menurut saya ini ada hubungannya dengan fungsi Model.collection.insert. Namun pengetahuan saya tentang struktur yang mendasarinya tidak cukup dalam untuk memahami apa yang terjadi di sini.

Adakah yang pernah mengalami masalah seperti itu? Dan apa yang bisa saya lakukan untuk mengatasinya?


person Johannes Klauß    schedule 05.06.2015    source sumber


Jawaban (2)


Menemukan jawabannya. Masalahnya adalah saya memasukkan instance Model luwak ke dalam array. Namun hanya benda biasa yang diperbolehkan.

person Johannes Klauß    schedule 05.06.2015

Biasanya, ini akan berupa komentar, tetapi saya tidak dapat mengirimkan komentar karena poin reputasi saya rendah, tetapi saya merasa informasi ini akan berguna bagi seseorang.

Jawaban yang diterima adalah jawaban yang benar, tapi saya hanya ingin mengatakan bahwa saya menerima kesalahan yang berbeda kalau-kalau ada orang lain yang mengalami masalah yang sama. Saya juga memasukkan 10 juta catatan dan menerima pesan kesalahan berikut:

{ '0': 
   { [MongoError: key $__ must not start with '$']
     name: 'MongoError',
     message: 'key $__ must not start with \'$\'' },
  '1': undefined }

Seperti yang Anda lihat, pesan kesalahan itu tidak membantu sama sekali.

Saya meneruskan Model mongo, bukan sekadar JSON lama. Terima kasih untuk bantuannya.

person Quy    schedule 10.07.2015