MongoDB $不是$或者性能

时间:2017-09-14 12:21:51

标签: mongodb mongoose

我有一个名为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)

0 个答案:

没有答案