[英]In Mongoose (node.js MongoDB), how do I perform this update?
[英]Is posible to do this? MONGODB MONGOOSE NODE.JS
以这个集合为例
{ _id:1 ,hotelname:"hotelxd",rooms:17}
{ _id:2 ,hotelname:"hotelxd2",rooms:187}
我想在此文档中添加一个新字段,称为酒店大小,该字段取决于具有此条件的房间数量。
function classifyrhotel(rooms) {
if (rooms>=0 && rooms<=50) {
return "Small hotel";
}
if (rooms>=51 && rooms<=100) {
return "Medium hotel";
}
if (rooms>100) {
return "Large hotel";
}
最终的数据库应该是这样的
{ _id:1 ,hotelname:"hotelxd",rooms:17,hotelsize:"Small hotel"}
{ _id:2 ,hotelname:"hotelxd2",rooms:187,hotelsize:"Large hotel"}
是的! 您可以将聚合管道与$addFields阶段和$switch运算符一起使用,然后使用$out阶段更新您的集合。
这是查询:
db.collection.aggregate([
{
$addFields: {
hotelsize: {
$switch: {
branches: [
{
case: {
$lte: [
"$rooms",
50
]
},
then: "Small hotel"
},
{
case: {
$lte: [
"$rooms",
100
]
},
then: "Medium hotel"
}
],
default: "Large hotel"
}
}
}
},
{
$out: "collection"
}
])
你可以在这里测试它(没有 $out 阶段)
注意:此查询将更新您的整个集合,请先尝试(删除 $out 阶段将在不更新数据的情况下执行查询)
注意:从 MongoDB 4.2 开始,您可以在内部使用聚合管道执行更新操作。 这个 $addFields 阶段必须完成这项工作,但我现在无法测试它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.