如何在mongo db上对用户数据进行分组

时间:2016-03-30 15:27:37

标签: mysql mongodb

我正在尝试从monogo数据库中订购结果,这在mysql中是等效的。

set -e

这是我的mongoDB查询:

SELECT * FROM `test` WHERE user1 = 'josieboy' or user2='josieboy' GROUP by user1, user2

查询返回的结果超过预期结果:

返回结果

id user1 user2留言

1 fred josieboy HI
2 josieboy fred Wts up 3 racheal josieboy HI

预期结果

id user1 user2留言

2 josieboy fred Wts up 3 racheal josieboy HIy

我想为Fred和Josieboy返回一个匹配,无论返回的行数是多少,最新的id和最新消息是user1或user2的顺序。

如果更新查询可以在mongodb中,我也会很高兴...

感谢

1 个答案:

答案 0 :(得分:0)

它长而丑,但我认为你想要的是什么:

db.test.aggregate({
    $match: {
        $or: [{
            'user1': data
        }, {
            'user2': data
        }]
    }
}, {
    $project: {
        user1: 1,
        user2: 1,
        Message: 1,
        users: ["$user1", "$user2"]
    }
}, {
    $unwind: "$users"
}, {
    $redact: {
        $cond: {
            if: {
                $eq: ['$users', data]
            },
            then: '$$PRUNE',
            else: '$$KEEP'
        }
    }
}, {
    $group: {
        _id: '$users',
        __id: {
            $last: '$_id'
        },
        user1: {
            $last: '$user1'
        },
        user2: {
            $last: '$user2'
        },
        Message: {
            $last: '$Message'
        }
    }
}, {
    $project: {
        _id: '$__id',
        user1: 1,
        user2: 1,
        Message: 1
    }
})