Jobs.find({status: 'active', expiry_date: {$gt: Date.now()}}, function(err, result) {})
我有以上查询,找到活动状态但未过期。这个逻辑刚刚起作用,但对于那些没有expiry_date文档的乔布斯来说,它已经被打破了。这是因为expiry_date文档是后来添加的要求。
如果expiry_date文档不存在,如何仍然返回活动作业?
答案 0 :(得分:1)
您可以使用$或运算符:
Jobs.find({status: 'active', $or: [ {expiry_date: {$gt: Date.now()}}, {expiry_date: { $exists: false } ]}, function(err, result) {})
您可能必须使用存在查询,因为它将匹配没有该字段的文档,但如果文档具有该字段但它为空则不会。
从长远来看,如果可以的话,最好只填写所有文件的到期日期。