以下mysql查询的等效mongodb查询是什么?

时间:2014-03-14 08:23:54

标签: php mongodb mongodb-query aggregation-framework

以下mysql查询的等效mongodb查询是什么,或者如何编写查询以获取结果

SELECT name,species FROM pet 按字段排序(种类,'狗','猫','蛇','鸟'),名称ASC

1 个答案:

答案 0 :(得分:0)

要实现这一点,您需要做的是使用汇总

权重您的回复
db.collection.aggregate({
    { "$project": {
        "name": 1,
        "species", 1
        "weight": { "$cond": [
            { "$eq": [ "$species", "dog" ] },
            4,
            { "$cond": [
                { "$eq": [ "$species", "cat" ] },
                3,
                { "$cond": [
                    { "$eq": [ "$species", "snake" ] },
                    2,
                    { "$cond": [
                       { "$eq": [ "$species", "bird" ] },
                        1,
                        0
                    ]}
                ]}
            ]}
        ]}
    },
    { "$sort": { "weight": -1 }}
])

因此,您使用$cond运算符作为ternary运算来评估字段的当前值。如果它与条件匹配,则将值赋值给权重,如果没有移动到下一个,直到它不匹配,则分配0。

按重量降序排序,结果按照您想要的顺序排列。

您可以在代码here中看到如何生成此嵌套结构。