如果有人读到这个,我已经回答了我自己的愚蠢问题。 问题是我将值存储为整数,但将其作为字符串进行搜索。 专业提示:将内容存储为字符串值或; 在查询整数时,使用变量时,请使用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};
答案 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,数据类型很难。