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
}
- 我必须使用 "javascript function" 作为查询
- 我无法控制数据
我的问题是,是否可以传递某种 "throwIsFalse" 标志,这意味着无论何时该函数抛出错误,该行都不匹配?
谢谢大家
你不应该为此使用 $where
查询,因为你可以更有效地做到这一点(并且没有你遇到的问题)作为:
db.find({CustomerPurchaseOrderNumber: "value"})
但是如果您出于某种原因需要使用 $where
查询,您只需要在调用 indexOf
之前检查 CustomerPurchaseOrderNumber
是否确实存在:
db.find('this.CustomerPurchaseOrderNumber && this.CustomerPurchaseOrderNumber.indexOf("value") !== -1')
很惊讶这个问题还没有被问到(嗯,我找不到),但可以说我正在使用查询:
db.find('this.CustomerPurchaseOrderNumber.indexOf("value") !== -1')
我的数据中有 3/4 的 CustomerPurchaseOrderNumber 是字符串,但其中一些数据为空,导致此错误:
error: {
"$err" : "TypeError: Cannot call method 'indexOf' of null near 'value\") !== -1' ",
"code" : 16722
}
- 我必须使用 "javascript function" 作为查询
- 我无法控制数据
我的问题是,是否可以传递某种 "throwIsFalse" 标志,这意味着无论何时该函数抛出错误,该行都不匹配?
谢谢大家
你不应该为此使用 $where
查询,因为你可以更有效地做到这一点(并且没有你遇到的问题)作为:
db.find({CustomerPurchaseOrderNumber: "value"})
但是如果您出于某种原因需要使用 $where
查询,您只需要在调用 indexOf
之前检查 CustomerPurchaseOrderNumber
是否确实存在:
db.find('this.CustomerPurchaseOrderNumber && this.CustomerPurchaseOrderNumber.indexOf("value") !== -1')