【发布时间】:2015-02-20 16:35:47
【问题描述】:
我有一个问题,我的 MongoDB 数据库有一个经过修改的 Mongoose 方案。
我希望能够使用where 命令进行查询,但如果该字段丢失或在任何找到的记录中出现undefined,则Mongoose 会返回错误。
例如:
return this.find({personID: req.user._id})
.where('rangeBefore').lt(time);
这会返回错误,因为某些记录没有rangeBefore。
我想要实现的是过滤掉任何没有rangeBefore 字段的记录(即它没有通过where 测试)。
我尝试过像这样使用exists 前缀:
return this.find({personID: req.user._id})
.exists('rangeBefore').where('rangeBefore').lt(time);
但我仍然收到错误消息。
谁能建议一种方法来忽略带有undefined 字段的记录,而不是返回错误?
【问题讨论】:
-
您收到的错误信息是什么?
-
路径“rangeBefore”中值“未定义”的数字转换失败
-
该错误消息通常意味着您的
time变量是undefined。像这样的查询自然会忽略不存在rangeBefore的文档。time的值是多少? -
你说的很对——问题出在“时间”上。这真是一种解脱——我想知道当特定记录中没有字段时猫鼬是否无法执行查询,但实际上它工作正常。