MongoDB: 在 find() 中使用 $where 会抛出错误

MongoDB: using $where in find() throws error

很惊讶这个问题还没有被问到(嗯,我找不到),但可以说我正在使用查询:

db.find('this.CustomerPurchaseOrderNumber.indexOf("value") !== -1')

我的数据中有 3/4 的 CustomerPurchaseOrderNumber 是字符串,但其中一些数据为空,导致此错误:

error: {
    "$err" : "TypeError: Cannot call method 'indexOf' of null near 'value\") !== -1' ",
    "code" : 16722
}
  1. 我必须使用 "javascript function" 作为查询
  2. 我无法控制数据

我的问题是,是否可以传递某种 "throwIsFalse" 标志,这意味着无论何时该函数抛出错误,该行都不匹配?

谢谢大家

你不应该为此使用 $where 查询,因为你可以更有效地做到这一点(并且没有你遇到的问题)作为:

db.find({CustomerPurchaseOrderNumber: "value"})

但是如果您出于某种原因需要使用 $where 查询,您只需要在调用 indexOf 之前检查 CustomerPurchaseOrderNumber 是否确实存在:

db.find('this.CustomerPurchaseOrderNumber && this.CustomerPurchaseOrderNumber.indexOf("value") !== -1')