mongodb 学习记录

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进行条件筛选。
如果有其他更好的方法欢迎讨论。

上一篇
下一篇