微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB 查询具有整数值的字段

如何解决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");
    }
});

Playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?