Mongodb:Javascript(Meteor)中的$ gt和$ lt不起作用

时间:2015-12-06 12:23:41

标签: javascript mongodb meteor

更新:问题已解决,问题出在显示器前面。我通过测试函数调用了这个,并且两个变量(startSegmentendSegment)都是字符串参数。解析没有以某种方式捕获。感谢大家的帮助。

我可以使用正确答案(两条记录)在MongoDb shell中运行查询,当我将$ gt和$ lt中使用的值替换为绝对值时,它也可以工作,如下例所示:

res = Matches.find(
  { chr: chr , 
    start: {$lt: 12103392}, 
    end: {$gt: 9381380}, 
    $or: [
      {kit1: kitnoA }, 
      {kit2: kitnoA }
    ]
  });

但是,当我用局部变量替换两个绝对值时,它不会返回单个文档:

res = Matches.find(
  { chr: chr, 
    end: {$gt: startSegment}, 
    start: {$lt: endSegment}, 
    $or: [
      {kit1: kitnoA }, 
      {kit2: kitnoA }
    ]
  });

  res.forEach(function (doc) {
     console.log(JSON.stringify(doc));
  });

我检查过MongoDb文档(例如:https://docs.mongodb.org/v2.6/reference/operator/query/lt/)无济于事。在互联网上搜索也没有产生任何良好的领先优势。

我还尝试了$ where运营商,虽然这显然会对性能产生巨大的劣势(不能使用索引并且必须进行全表扫描),但它也没有工作并完全忽略$ where子句(它选择了符合其他条件的所有文件:

res = Matches.find( 
  {chr: chr}, 
  {$where: "this.start < endSegment || this.end > startSegment"}, 
  {$or: [
    {kit1: kitnoA }, 
    {kit2: kitnoA }
  ]
});

除了_id

上的系统索引之外,此集合上没有定义索引

我很困惑为什么它根本不能用变量工作。使用Meteor版本1.1.0.3,它使用MongoDb版本2.6.7

谢谢大家的帮助

0 个答案:

没有答案