如何在MongoSH中查询filmsReviewed数组含指定ObjectId的文档?
解决MongoSH中查询数组包含指定ObjectId文档的问题
你的查询语句出错是因为误用了$elemMatch,且语法格式不正确。针对filmsReviewed数组直接存储ObjectId的场景,有两种正确的查询方式:
直接匹配数组元素(最简洁):
db.users.find({ filmsReviewed: ObjectId("6405429fd07c188c61461a8b") })MongoDB会自动识别数组字段的匹配逻辑,只要数组中包含该ObjectId,文档就会被返回。
用
$in匹配(效果和上面一致,适合多值查询场景):db.users.find({ filmsReviewed: { $in: [ObjectId("6405429fd07c188c61461a8b")] } })
原查询错误说明
$elemMatch用于匹配数组中嵌套文档满足指定条件的场景,而你的数组元素是单一ObjectId值,不需要用它。另外原语句中{ObjectId("6405429fd07c188c61461a8b")}是无效语法,对象的键不能直接是函数调用。
内容的提问来源于stack exchange,提问作者D. Rattansingh
相关产品推荐
相关产品推荐

