将变量传递给 mongodb
passing variable to mongodb
为了防止其他人看到这篇文章,我已经回答了我自己的愚蠢问题。
问题是我将值存储为整数,但将其作为字符串进行搜索。
专业提示:将内容存储为字符串值或;
查询整数时,使用变量时,使用 parseInt(variable)。
它会节省您数小时的思考时间。
我只是想将一个变量传递给 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};
O.M.G.........
所以,在阅读了我自己的问题并思考之后,我意识到文档值 "ts" 被存储为一个整数。
所以我改变了:
search['ts'] = {$gte: datestart, $lte: dateend};
至
search['ts'] = {$gte: parseInt(datestart), $lte: parseInt(dateend)};
是啊,数据类型很难。
为了防止其他人看到这篇文章,我已经回答了我自己的愚蠢问题。 问题是我将值存储为整数,但将其作为字符串进行搜索。 专业提示:将内容存储为字符串值或; 查询整数时,使用变量时,使用 parseInt(variable)。 它会节省您数小时的思考时间。
我只是想将一个变量传递给 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};
O.M.G.........
所以,在阅读了我自己的问题并思考之后,我意识到文档值 "ts" 被存储为一个整数。
所以我改变了:
search['ts'] = {$gte: datestart, $lte: dateend};
至
search['ts'] = {$gte: parseInt(datestart), $lte: parseInt(dateend)};
是啊,数据类型很难。