MongoDB查询报错:$ne需传入2个参数,仅传1个如何解决?
修复MongoDB查询中的$ne参数错误
你的问题出在findOne的参数传递顺序错误,MongoDB的findOne方法第一个参数是查询条件对象,第二个是投影(返回字段)配置,第三个是可选的查询选项。你把_id: { $ne: Card._id }这个查询条件放到了第二个参数的位置,导致MongoDB将其解析为投影配置,进而触发$ne参数数量错误的报错。
正确的查询代码
将所有查询条件合并到第一个参数中,投影配置放在第二个参数:
const hasUsedVideo = await db.SessionCard.findOne( { movie: Card.movie, unit: Card.unit, video: Card.video, _id: { $ne: Card._id } // 把这个条件移到第一个查询对象里 }, { _id: 1 }, // 投影配置,只返回_id字段 ).lean();
错误原因说明
原来的代码中,第二个参数{ _id: { $ne: Card._id } }会被MongoDB当作投影规则处理,但投影规则中不允许使用$ne这类查询操作符,因此触发了参数数量错误的提示——因为投影字段的值应该是1/0或者字段投影表达式,而不是查询操作符。
内容的提问来源于stack exchange,提问作者Sara Ree
相关产品推荐
相关产品推荐

