我正在使用来自nodejs的JavaScript mongodb驱动程序。我想在我的JavaScript函数中执行以下查询:
db.mycollection.find({Zip:/^94404/});
mongo客户端检索符合此条件的8个文档。但是,我的JavaScript代码未获取任何文档。
DataProvider.prototype.findByZipcode = function(zipCode,callback){ this.getCollection(function(error,collection){ 如果(错误) 回调(错误); 其他{ var qs ='{Zip:/ ^'+ zipCode +'/}'; collection.find(qs).toArray(function(error,results){ 如果(错误) 回调(错误); 其他 callback(null,results); }); } }); };
我也试过
<pre> var qs = {Zip: '/^'+zipCode+'/'}; </pre>
顺便说一句,我发现完全匹配可以正常工作,但这不是我想要的。
即。
<pre> var q = {'Zip' :zipCode}; </pre>
您几乎拥有它。除非在 字符串中 '/^94404/'有一些奇怪的邮政编码,否则您始终在字符串内以正则表达式结尾,并寻找该 字符串 以查找任何内容。
'/^94404/'
从JavaScript中的字符串构建正则表达式对象的最简单方法是使用new RegExp(...):
new RegExp(...)
var query = { Zip: new RegExp('^' + zipCode) };
那么你就可以:
collection.find(query).toArray(...)
这种事情在MongoDB shell中起作用,而类似的事情在Ruby接口中起作用,因此它也应该在JavaScript接口中起作用。