MongoDB函数返回[unknown type]结果

时间:2018-02-06 11:54:10

标签: mongodb mongodb-query stored-functions

我正在使用Mongo v3.2并且我已经编写了一个存储函数,它迭代了近6,000个文档(每个文档大约29kB)。参数是整数数组' A' (长度:2048)和另一个整数' n'该功能比较A'在每个文档中都有一个类似A的列表来查找余弦相似度,并返回一个' n'字典。 (我还过滤掉了没有A类列表的文件)

每次从mongo shell中激活该函数时,它都会给出2个结果屏幕。第一个有阵列' A'第二个 [未知类型] 。我尝试使用batchSize(5)并仍然使用相同的结果。但是当我运行相同的查询并设置limit(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);}

0 个答案:

没有答案