我有一个具有EndDateTime字段的集合:
如果endDateTime
是null
,则操作尚未完成。
如果已经完成,endDateTime
包含时间戳(javascriptDate.now()
)
如何查询在过去24小时内尚未完成(endDateTime
是null
)或已结束的记录:
let endDateTime = Date.now();
let startDateTime = endDateTime - 24 * 60 * 60 * 1000;
query.endDateTime = {
$or: [
null,
{ $and: [{ $gte: startDateTime }, { $lte: endDateTime }] }
]
};
我的查询返回
24 hours ago
之前的寄存器。怎么解决? 最佳答案
您可以将您的标准与$or
结合起来:
db.col.find({
$or: [
{ endDateTime: null },
{ endDateTime: { $gt: Date.now() - 24 * 60 * 60 * 1000 } }
]
})
或者如果您的某些文档中没有
endDateTime
键,则需要$exists接线员:db.col.find({
$or: [
{ endDateTime: { $exists: false } },
{ endDateTime: { $gt: Date.now() - 24 * 60 * 60 * 1000 } }
]
})