将变量传递给mongodb

时间:2015-06-06 05:15:12

标签: mongodb mongojs

如果有人读到这个,我已经回答了我自己的愚蠢问题。 问题是我将值存储为整数,但将其作为字符串进行搜索。 专业提示:将内容存储为字符串值或; 在查询整数时,使用变量时,请使用parseInt(变量)。 它可以为您节省数小时的时间。

我只是尝试将变量传递给mongodb(使用mongojs),但如果它不是字符串或其他东西,它似乎不起作用。

我需要使用$gte$lte来查找一些文档。该变量来自app.get() /get/prods?startdate=1431057999826&enddate=1433563599832

该文件如下:

{ 
    "_id" : ObjectId("5571288438e80a073c0fc32c"), 
    "account" : "AC654164545-006",
    "uip" : 1217390010, 
    "ci" : "products", 
    "ts" : 1433479300668, 
    "guid" : "_upzghlayx", 
    "title" : "test_prod", 
    "type" : "car" 
}

这很好用:

db.data.find({"account":'AC654164545-006', "ts": {$gte: 1431057999826, $lte: 1433563599832}});

但是当我抓住查询字符串时,就像这样(变量是正确的数字,所以我知道它们是正确的):

var datestart = req.query.startdate;
var dateend = req.query.enddate;

并使用它们进行查询:

db.data.find({"account":'AC654164545-006', "ts": {$gte: datestart, $lte: dateend}})

我得到0结果。我还尝试过预先构建查询。

var search = { "account":'AC654164545-006'};

search['ts'] = {$gte: datestart, $lte: dateend};

再次,0结果。但是,如果我切换到没有变量的手动输入,它可以再次正常工作。

search['ts'] = {$gte: 1431057999826, $lte: 1433563599832};

1 个答案:

答案 0 :(得分:1)

O.M.G .........

所以,在阅读了我自己的问题并思考之后,我意识到文档的价值" ts"被存储为整数。

所以我改变了:

- (void)viewWillAppear:(BOOL)animated 
  {
         UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textColor = [UIColor darkTextColor];
titleLabel.font = [UIFont boldSystemFontOfSize:18.0];
titleLabel.numberOfLines = 1;
titleLabel.adjustsFontSizeToFitWidth = YES;
titleLabel.textAlignment = NSTextAlignmentCenter;
 //  [[self appDelegate]goOnline];
if ( [[self appDelegate] connect])
{
    titleLabel.text = [[[[self appDelegate] xmppStream] myJID] bare];
} else
{
    titleLabel.text = @"No JID";
}

[titleLabel sizeToFit];

self.navigationItem.titleView = titleLabel;
}

search['ts'] = {$gte: datestart, $lte: dateend};

Ay ya,数据类型很难。