use*_*025 6 mongoose mongodb node.js
我有一个问题,我有一个凌乱的MongoDB数据库与修订的Mongoose方案.
我希望能够使用该where命令进行查询,但如果该字段丢失或undefined在任何找到的记录中,则Mongoose会返回错误.
例如:
return this.find({personID: req.user._id})
.where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)
这会返回错误,因为某些记录没有rangeBefore.
我想要实现的是没有rangeBefore字段的任何记录被过滤掉(即它没有通过where测试).
我试过exists像这样的前缀:
return this.find({personID: req.user._id})
.exists('rangeBefore').where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)
但我仍然得到一个错误.
任何人都可以建议一种方法来忽略带undefined字段的记录,而不是返回错误?
Fel*_*ira 14
如果您只想修改现有查询:
return this.find({ personID: req.user._id,
rangeBefore: { $exists: true, $ne: null } //also check for nulls
})
.where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)
或者,如果适合,您也可以使用回调方法:
this.find({personID: req.user._id,
rangeBefore: { $exists: true, $ne: null, $lt: time }
})
.exec(function(err, record) { });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12926 次 |
| 最近记录: |