MongoDB查询数组含指定ID返回空?问题排查
问题原因及解决方法
你的查询返回空结果,核心原因是:你用字符串格式的ID进行匹配,但集合中followingUsers数组存储的是MongoDB的ObjectId类型,而非普通字符串,两者类型不匹配导致无法命中数据。
正确的查询语句
将字符串ID转换为ObjectId类型后再查询,两种写法的正确版本如下:
基础匹配查询
db.users.find({"followingUsers": ObjectId("63d0522c655fa263cfe003e7")})
使用$all的匹配查询
db.users.find({"followingUsers": {"$all": [ObjectId("63d0522c655fa263cfe003e7")]}})
满足你最终需求的批量更新操作
既然你的目标是删除被删用户在其他用户followingUsers数组中的引用,可以直接用updateMany结合$pull操作符批量处理:
db.users.updateMany( {"followingUsers": ObjectId("63d0522c655fa263cfe003e7")}, {"$pull": {"followingUsers": ObjectId("63d0522c655fa263cfe003e7")}} )
这个语句会自动找到所有包含该用户ID的文档,并从它们的followingUsers数组中移除这个ID。
内容的提问来源于stack exchange,提问作者MisterQvD
相关产品推荐
相关产品推荐

