如何解决MongoDB 查询具有整数值的字段
我正在尝试使用字符串和数字作为字段进行查找查询。该查询在单独查找字符串时起作用。我怎样才能让它也适用于数字?
var check = request.body.cookie; // String
var tok = request.body.token; // It's a number
db.collection("users").find({'name':check,'token':tok}).toArray(function(err,rows) {
if(!rows.length)
{
console.log("No data found");
}
});
下面给出了一个样本集合
> db.users.find()
{ "_id" : ObjectId("608be0dc8b83df0248ed2fc1"),"name" : "John","age" : "18","gender" : "M","country" : "RR","socketid" : "1","token" : "5907" }
解决方法
token
字段可能在数据库中存储为字符串,而不是数字。看看逗号。
"token" : "5907"
尝试将 tok
转换为查询中的字符串。
find({'name':check,'token':String(tok)})
,
您可以使用表达式 $expr 条件来确保 100% 的任何标记的类型为字符串或数字,
-
$toInt
将字符串转换为数字
var check = request.body.cookie; // String
var tok = request.body.token; // It's a number
db.collection("users").find({
$and: [
{ name: check },{
$expr: {
$eq: [{ $toInt: "$token" },tok]
}
}
]
}).toArray(function(err,rows) {
if(!rows.length)
console.log("No data found");
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。