MongoDB中如何排除from_id与chat_id值相同的文档?
解决MongoDB排除from_id与chat_id相同文档的问题
你之前用from_id: { $ne: '$chat_id' }不生效的原因是:MongoDB会把'$chat_id'识别成普通字符串,而非引用文档里的chat_id字段,自然没法正确对比两个字段的值。
下面是两种可行的实现方法:
方法1:直接查询时用$expr
通过$expr允许查询条件使用聚合表达式,实现字段间的比较:
db.collection.find({ $expr: { $ne: ['$from_id', '$chat_id'] } })
这里$ne数组内的两个元素都是字段引用,能准确判断from_id和chat_id的值是否不同。
方法2:聚合管道中使用$match
如果需要结合其他聚合操作,可在$match阶段用同样的逻辑:
db.collection.aggregate([ { $match: { $expr: { $ne: ['$from_id', '$chat_id'] } } } ])
内容的提问来源于stack exchange,提问作者Дмитрий Коляда
相关产品推荐
相关产品推荐

