我有一个名为locked_at
的字段,对于未锁定或日期,该字段可以为null。我想选择锁定时间超过10分钟或根本没有锁定的所有文档。有两种方法可以实现这一点,我想知道应该选择哪一种。
我将从$或方法开始,因为它更容易理解:
const minLockTimeMinutes = moment().utc().subtract(10, 'minutes').toDate()
const filter = { $or: [{ locked_at: { $lt: minLockTimeMinutes } }, { locked_at: null }] }
PlayerProfile.findOneAndUpdate(filter, updateDoc, options)
替代$ not:
const minLockTimeMinutes = moment().utc().subtract(10, 'minutes').toDate()
const filter = { locked_at: { $not { $gt: minLockTimeMinutes } } }
PlayerProfile.findOneAndUpdate(filter, updateDoc, options)
问题:
这两种方法在性能方面是否存在显着差异?我个人认为$或语句更容易理解,因为较低的一个是某种双重否定。 ($ not + $ gt而不是$ lt)