如何解决如何使用猫鼬在返回结果中创建新字段并根据条件在其中设置值?
我有一个名为“动物”的MongoBD收藏
[
{
_id:ObjectId("5f3ecddd7fe1af0c68614605"),status: "wild",name: "Wolf"
},{
_id:ObjectId("5f3ecddd7fe1af0c68614606"),status: "domestic",name: "Dog"
},{
_id:ObjectId("5f3ecddd7fe1af0c68614607"),name: "Pussy Cat"
},{
_id:ObjectId("5f3ecddd7fe1af0c68614608"),name: "Lion"
},{
_id:ObjectId("5f3ecddd7fe1af0c68614609"),name: "Snake"
}
]
我想使用猫鼬中的聚合管道查询该集合,并返回一个带有新字段的结果,该字段根据文档中的status
字段对它们进行分类。例如,具有status: "wild"
的文档将获得新字段new_field: "Tough Forest Animal"
然后,具有status: "domestic"
的文档将获得新字段new_field: "Friendly Neighborhood Animal"
我想要看起来像这样的结果
[
{
_id: "5f3ecddd7fe1af0c68614605",name: "Wolf",new_field: "Tough Forest Animal"
},{
_id: "5f3ecddd7fe1af0c68614606",name: "Dog",new_field: "Friendly Neighborhood Animal"
},{
_id: "5f3ecddd7fe1af0c68614607",name: "Pussy Cat",{
_id: "5f3ecddd7fe1af0c68614608",name: "Lion",{
_id: "5f3ecddd7fe1af0c68614609",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)
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。