当前位置: 首页 > 面试题库 >

用于Number类型字段的Mongoose find()RegExp

单于扬
2023-03-14
问题内容

我试图用过滤器创建一个表,当我需要通过正则表达式查找行时,我在下面出现了错误。我如何将RegExp与Number的字段类型一起使用?更改String的字段类型,这是个好主意吗?

var ContractSchema = new Schema({
  userId: {type: Schema.Types.ObjectId, ref: 'User'},
  number: Number,
  // ...
});

module.exports = mongoose.model('Contract', ContractSchema);

Contract.find({number: /555/}, function(err, contracts){
  console.log(err, contracts);
});

在路径“数字”处将值“ / 555 /”转换为数字失败


问题答案:

当然,正则表达式仅适用于字符串。但是,您仍然可以这样做,尽管这样做效率非常低:

Contract.find(
    { "$where": "function() { return this.number.toString().match(/555/) != null; }" }
).function(err,contracts) {
   // do something with results
});

MongoDB
$where
查询运算符允许在服务器上针对集合中的每个文档或其他查询条件遗留的文档评估JavaScript条件。

基本上,该评估将字段值转换为a String,然后对其进行正则表达式操作。

否则,您将更改内容或为字符串表示形式添加另一个字段。但是,除非您^从字符串的开头使用锚,否则即使$regex对实际的字符串字段进行操作也比使用所示的JavaScript评估更有效。

PS确保您的服务器允许JavaScript评估。有些人选择关闭此功能。但默认情况下应启用。



 类似资料:
  • 主要内容:Oracle NUMBER类型简介,Oracle NUMBER数据类型示例,Oracle NUMBER数据类型别名在本教程中,您将学习Oracle 数据类型以及如何使用它来为表定义数字列。 Oracle NUMBER类型简介 Oracle 数据类型用于存储可能为负值或正值的数值。以下说明了数据类型的语法: Oracle 数据类型具有以下精度和尺度。 精度是一个数字中的位数。 范围从到。 尺度是数字中小数点右侧的位数。 范围从到。 例如,数字的精度是,尺度是。所以要存储这个数字,需要定义

  • Number 类型应该是 ECMAScript 中最令人关注的数据类型了,这种类型使用 IEEE754 格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。为支持各种数值类型, ECMA-262 定义了不同的数值字面量格式。 最基本的数值字面量格式是十进制整数,十进制整数可以像下面这样直接在代码中输入: var intNum = 55; // 整数 除了以十进制表示外,整数还可以通

  • 本文档包含了Django提供的全部模型字段的字段选项 和 字段类型的API参考。 请看: 如果内建的字段不能满足你的需要,你可以尝试包含对特定国家和文化有帮助的配套代码的 django-localflavor。当然,你也可以很容易的编写你自定义的字段。 注意 严格意义上来讲, Model 是定义在django.db.models.fields里面,但为了使用方便,它们被导入到 django.db.

  • 是否可以重载一个字段类型成为另一个字段类型? 如果是,是否可以提供一些例子?

  • 我无法使elasticsearch聚合+筛选器处理嵌套字段。数据模式(相关部分)如下所示: 本质上,“RB”对象包含一个名为“project”的嵌套字段,该字段包含另外两个字段--“name”和“age”。我正在运行的查询: 该查询应该生成与日期筛选器匹配的前10个项目(project.name字段),按其年龄中值排序,忽略数据库中提及次数少于5次的项目。中位数应仅用于匹配筛选器(日期范围)的项目

  • 你好,我正在使用JAXB将XML解锁到JAVA,我的xml文档中有一个元素“值”,可以是int类型,也可以是双精度型,并且我的java类中此元素的相应属性是数字类型的“值”。 JAXB不支持“数字”类型的umarshaling,我想,有人知道如何处理这个问题吗?一个例子将会得到真正的赞赏。提前谢谢。