我正在尝试编写一个javascipt,它将从文本文件中获取大量值,并将使用这些值来创建大量查询以查找字段。例如,文本文件中给出了2000个值,然后我试图从文件中读取值,它将使用每个值来执行每个查询。所以我没有得到如何编写它的概念,因为不可能单独编写2000个查询,请帮助
var values = new Array();
$.get('UserFile.txt', function(data){
values = data.split('\n');
console.log(value);
db.students.find(CID:{$in[values]})
});
这是我想要应用的概念,UserFile.txt有20000个值,它将使用这些值来查找它。此外,它还没有在shell中定义“$”
答案 0 :(得分:0)
如果你实际上有一个可以为你加载文件内容的库,这个概念是合理的,所以如果你想要JavaScript,可能更适合于另一种语言实现或类似nodejs,而不是这样做mongo shell。
除此之外,唯一的问题是您使用$in
运算符的语法,而应该是:
values = filecontent.split('\n'); // Somehow obtained from reading a file
db.students.find({ "CID": { "$in": values } });
这是因为进入values
的任何内容都已经是该语言的本地数组,并且将被传递给$in
的参数,该参数期望它的参数是一个数组。
传入一个非常大的数组可能不是最好的主意,你的总请求必须低于16MB BSON限制。因此,您可能需要将这些数组元素拆分为多个查询,但是以批量大小而不是单数形式,因此至少更好。
我可能是错的,但我发现你可能找不到可以加载的库,你可以加载原生JavaScript作为一种结构,但这不是重点。
使用其他内容作为您的语言实现,您可以按照正确的语法获得所需的结果。