Можно ли читать из mongoDB партиями? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть огромный набор данных в MongoDB, я должен был сохранять его по частям, используя create, в пакетах, скажем, 1%. Теперь я хочу прочитать это обратно. Я знаю, что nodeJS может взять тепло, потому что я читаю его в локальную переменную перед сохранением в mon go и отправляю в Angular. Я получаю сообщение об ошибке ниже, но я считаю, что эта ошибка исходит от MongoDB / Mon goose.

Было бы неплохо, если бы я мог читать данные из Mon go по частям.

(node:1096) UnhandledPromiseRejectionWarning: RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to write outside buffer bounds

Справочная информация : Я использую mon goose и заполнение, см. Здесь: Заполнение не заполняется для всех элементов массива

Работает, если я ограничиваю количество документов.

вот схема, которую я пытаюсь восстановить:

const FastaSchema = new mongoose.Schema({
  header: headerSchema,
  healthyTissue: [{ type: mongoose.Schema.Types.ObjectId, ref: "Hidden" }],

});

const hiddenSchema = new mongoose.Schema({
  children: [{ type: mongoose.Schema.Types.ObjectId, ref: "FastaElement" }]
});

const fastaElement = new mongoose.Schema({
  description: String,
  sequence: String,
  comments: String
});

Вот код, который я использую для заполнения:

app.use("/", async (req, res) => {
  const aux = await Fasta.find({}, "healthyTissue").populate({
    //---------------------first level (healthy or tumor fasta file) ----------------
    path: "healthyTissue",
    perDocumentLimit: 1,
    //---------------------    second level (hidden documents)       ----------------
    populate: {
      path: "children",
      perDocumentLimit: 1,
    },
  });

  const aux2 = [];

  aux.forEach((element) =>
    element.healthyTissue.forEach((hidden) =>
      hidden.children.forEach((leaf) => aux2.push(leaf))
    )
  );

  res.json(aux2);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...