Javascript 如何在返回结果中创建新字段,并根据使用Mongoose的条件在其中设置值?
我有一个叫“动物”的MongoBD收藏Javascript 如何在返回结果中创建新字段,并根据使用Mongoose的条件在其中设置值?,javascript,node.js,mongoose,conditional-statements,aggregate,Javascript,Node.js,Mongoose,Conditional Statements,Aggregate,我有一个叫“动物”的MongoBD收藏 [ { _id:ObjectId("5f3ecddd7fe1af0c68614605"), status: "wild", name: "Wolf" }, { _id:ObjectId("5f3ecddd7fe1af0c68614606&
[
{
_id:ObjectId("5f3ecddd7fe1af0c68614605"),
status: "wild",
name: "Wolf"
},
{
_id:ObjectId("5f3ecddd7fe1af0c68614606"),
status: "domestic",
name: "Dog"
},
{
_id:ObjectId("5f3ecddd7fe1af0c68614607"),
status: "domestic",
name: "Pussy Cat"
},
{
_id:ObjectId("5f3ecddd7fe1af0c68614608"),
status: "wild",
name: "Lion"
},
{
_id:ObjectId("5f3ecddd7fe1af0c68614609"),
status: "wild",
name: "Snake"
}
]
我想使用mongoose中的聚合管道查询该集合,并使用一个新字段返回结果,该字段根据文档中的status
字段对其进行分类。例如,具有状态的文档:“野生”
获取新字段new\u字段:“坚韧的森林动物”
然后,具有状态的文档:“家养”
获得新字段新字段:“友好邻里动物”
我想要这样的结果
[
{
_id: "5f3ecddd7fe1af0c68614605",
status: "wild",
name: "Wolf",
new_field: "Tough Forest Animal"
},
{
_id: "5f3ecddd7fe1af0c68614606",
status: "domestic",
name: "Dog",
new_field: "Friendly Neighborhood Animal"
},
{
_id: "5f3ecddd7fe1af0c68614607",
status: "domestic",
name: "Pussy Cat",
new_field: "Friendly Neighborhood Animal"
},
{
_id: "5f3ecddd7fe1af0c68614608",
status: "wild",
name: "Lion",
new_field: "Tough Forest Animal"
},
{
_id: "5f3ecddd7fe1af0c68614609",
status: "wild",
name: "Snake",
new_field: "Tough Forest Animal"
}
]
非常感谢所有给予我的帮助。谢谢你我终于弄明白了。使用switch语句
AnimalsModel.aggregate([
{
$project: {
"_id": 1,
"status": 1,
"name": 1,
"new_field": {
"$switch": {
"branches": [
{ "case": { "$eq": [ "$status", "wild" ] }, "then": 'Tough Forest Animal' },
{ "case": { "$eq": [ "$status", "domestic" ] }, "then": 'Friendly Neighborhood Animal' },
],
"default": 'None of the above'
}
}
}
}
],function (error, animals) {
console.log(animals)
});