对于下面的mysql查询,什么是等价的mongodb查询,或者如何编写查询以获得结果
SELECT name, species FROM pet
ORDER 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。
按权重降序排序,结果按您想要的顺序出现。
您可以在这里看到如何在代码中生成这个嵌套结构。