MongoDB聚合后如何检查文档内userId与user_Id字段是否相等
检查MongoDB文档中userId与paymentData.user_Id是否相等的方法
1. 筛选出两个字段相等的文档
不管是在聚合管道里还是普通查询中,都可以用$expr配合$eq操作符直接比较两个字段的值:
聚合管道示例(在unwind之后添加筛选阶段)
db.collection.aggregate([ // 保留你已有的unwind阶段 { $unwind: "$paymentData" }, // 筛选userId与paymentData.user_Id相等的文档 { $match: { $expr: { $eq: ["$userId", "$paymentData.user_Id"] } } } ])
普通查询示例
db.collection.find({ $expr: { $eq: ["$userId", "$paymentData.user_Id"] } })
2. 给所有文档添加匹配状态标记
如果不想过滤掉不相等的文档,而是想直观查看每个文档的匹配结果,可以用$addFields新增一个标记字段:
db.collection.aggregate([ { $unwind: "$paymentData" }, { $addFields: { isUserIdMatch: { $eq: ["$userId", "$paymentData.user_Id"] } } } ])
执行后每个文档会多出一个isUserIdMatch字段,值为true或false,一眼就能判断两个字段是否相等。
内容的提问来源于stack exchange,提问作者sreeayanth
相关产品推荐
相关产品推荐

