Функция MongoDB возвращает результат [неизвестный тип]
Я использую Mongo v3.2, и я написал хранимую функцию, которая перебирает почти 6000 документов (каждый документ ~29 КБ). Параметры представляют собой целочисленный массив "A" (длина: 2048) и другое целое число "n". Функция сравнивает 'A' со списками, подобными A, присутствующими в каждом документе, чтобы найти сходство по косинусу и вернуть список из n словарей. (Я также отфильтровал документы, которые не имеют списка A-like)
Каждый раз, когда я запускаю функцию из оболочки Монго, она дает мне 2 экрана результатов. Первый имеет массив "А", а второй [неизвестный тип]. Я попытался использовать batchSize(5) и все тот же результат. Но когда я запускаю тот же запрос и устанавливаю лимит (100), он дает мне ожидаемый формат результата.
Я думаю, что функция ломается, потому что число документов и размер каждого документа немного велики. Если это так (или нет), как я могу это исправить?
(Изменить) Код:
function(A1, n) {
var list = [];
var cursor = db.product.find({A2:{$exists: true}}, no_cursor_timeout=true);
cursor.forEach(function(doc) {
var A2 = doc.A2;
/*
formula: (a = A1, b = A2)
num = a(0)*b(0) + a(1)*b(1) ... +a(2047)*b(2047)
den = sqrt([ a(0)^2 + a(1)^2 ... ]*[ b(0)^2 + b(1)^2 ...]) => L2 normal form of both arrays
similarity = num / den
distance = 1 - similarity
*/
var result = { "field1": val1, "distance": distance };
list.push(result);
});
list.sort(function(a, b){return a.distance- b.distance});
var newlist = list.slice(0,n);
cursor.close();
return (newlist);}