我有一个具有endDateTime字段的集合:
如果endDateTime
为null
,则该操作尚未完成。
如果完成,endDateTime
将包含时间戳记(Javascript Date.now()
)
如何查询尚未完成(endDateTime
为null
)或在最近24小时内结束的记录:
let endDateTime = Date.now();
let startDateTime = endDateTime - 24 * 60 * 60 * 1000;
query.endDateTime = {
$or: [
null,
{ $and: [{ $gte: startDateTime }, { $lte: endDateTime }] }
]
};
我的查询正在返回24 hours ago
之前的寄存器。如何解决?
答案 0 :(得分:2)
您可以将标准与$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 } }
]
})