mongodb 比较集合内两个字段值是否一样
查询集合数据:
{
"_id" : ObjectId("599d5b198ead0e5e6f00619e"),
"fields1" : 2000.0,
"fields2" : 2000.0
}
{
"_id" : ObjectId("599d5b198ead0e5e6f0061a3"),
"fields1" : 1000.0,
"fields2" : 500.0
}
find方法查询fields1 与 fields2字段值相同:
db.test.find({
"$where": "this.fields1 == this.fields2"
}).limit(10);
aggregate方法查询 fields1 与 fields2字段值相同:
db.test.aggregate([
{
$project:{
fields1: 1,
fields2: 1,
difference: { $eq: ["$fields1", "$fields2"]}
},
},
{
$match: {
difference: true
},
},
{ $limit:10 }
]);
difference=true值相同 false值不相同
ps:由于aggregate不支持 $where,所以需要用$project比较后在用$match进行条件筛选。
如果有其他更好的方法欢迎讨论。