下面的mysql查询对应的mongodb查询是什么?


what is the equivalent mongodb query for the following mysql query?

对于下面的mysql查询,什么是等价的mongodb查询,或者如何编写查询以获得结果

SELECT name, species FROM petORDER BY字段(物种,‘狗’,‘猫’,‘蛇’,‘鸟’),名字ASC

要做到这一点,您需要做的是权重您的响应使用聚合

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操作符,这是一个三元操作来计算字段的当前值。如果与条件匹配,则将值赋给weight,如果不匹配则移到下一个,直到不匹配则赋值为0。

按权重降序排序,结果按您想要的顺序出现。

您可以在这里看到如何在代码中生成这个嵌套结构。