MongoDB筛选:如何保留history_doc.data.objectId等于_id的数据?
MongoDB筛选
history_doc.data.objectId与_id相等的文档 需求:仅保留history_doc.data.objectId字段值与_id字段值相等的文档。
你尝试过的过滤条件:
{'history_doc.data.objectId': {$eq: '$_id'}}{'history_doc.data.objectId': {$eq: {$toString: '$_id'}}}
正确解决方案
MongoDB普通查询的过滤条件不支持直接用字段引用做比较,必须通过$expr启用表达式查询,根据字段类型选择对应写法:
- 若
history_doc.data.objectId为ObjectId类型:
{ $expr: { $eq: ["$history_doc.data.objectId", "$_id"] } }
- 若
history_doc.data.objectId为字符串类型:
{ $expr: { $eq: ["$history_doc.data.objectId", { $toString: "$_id" }] } }
如果是在聚合管道中使用,直接将上述条件放入$match阶段即可。
内容的提问来源于stack exchange,提问作者RF.ZHU
相关产品推荐
相关产品推荐

