需要猫鼬查询来搜索数组内的数组

时间:2020-05-13 03:39:37

标签: javascript node.js mongodb mongoose

因此,分配是根据车辆类型分配停车位。 如果是2轮摩托车-摩托车现货,4轮摩托车-紧凑型和大型现货,公共汽车-5个大型现货

我需要一种优化方法来获得可用的停车位,即。 slot.occupied == false,并且我想避免多个for循环,因为数据将增加并且具有多个级别。

    "levelNo":"1",
    "row":{[
        "rowNo":"1",
        "slots":[{
            "slotNo":1,
            "slotType":"Motorcycle",
            "occupied":false
            },
            {
            "slotNo":2,
            "slotType":"Motorcycle",
            "occupied":false
            },
            {
            "slotNo":3,
            "slotType":"Motorcycle",
            "occupied":false
            },{
            "slotNo":4,
            "slotType":"Compact",
            "occupied":false
            },{
            "slotNo":5,
            "slotType":"Compact",
            "occupied":false
            },{
            "slotNo":6,
            "slotType":"Compact",
            "occupied":false
            },
            {
            "slotNo":7,
            "slotType":"Large",
            "occupied":false
            },
            {
            "slotNo":8,
            "slotType":"Large",
            "occupied":false
            }]
        },
        {
        "rowNo":"2",
        "slots":[{
            "slotNo":1,
            "slotType":"Motorcycle",
            "occupied":false
            },
            {
            "slotNo":2,
            "slotType":"Motorcycle",
            "occupied":false
            },
            {
            "slotNo":3,
            "slotType":"Motorcycle",
            "occupied":false
            },{
            "slotNo":4,
            "slotType":"Compact",
            "occupied":false
            },{
            "slotNo":5,
            "slotType":"Compact",
            "occupied":false
            },{
            "slotNo":6,
            "slotType":"Compact",
            "occupied":false
            },
            {
            "slotNo":7,
            "slotType":"Large",
            "occupied":false
            },
            {
            "slotNo":8,
            "slotType":"Large",
            "occupied":false
            }]

        }]

}

Model(Schema)-请提出一种更好的存储此类数据的方法

    levelNo:{
            type:String,
            required:true,
        },
    row:[{
            rowNo:{
                type:String,
                required:true,
            },
            slots:[
                {
                    slotNo:{
                        type:Number,
                        required:true,
                    },
                    slotType:{
                        type:String,
                        enum:['Motorcycle','Compact','Large']

                    },
                    occupied:{
                        type:Boolean,
                        required:true,
                    },
                    currentVehicle:{
                        type:String,
                    }               
                }],

        }],
        totalrows:{
            type:Number,
            required:true
        },
        levelIsFull:{
            type:Boolean,
            default:false,
        }

})

1 个答案:

答案 0 :(得分:0)

也许您可以创建一个变量来存储搜索停车位的车辆类型。 然后,您只需要一个for循环,即可搜索同样未被占用的停车位。您无需循环每个楼层,循环遍历所有停车位,并且在找到停车位时便会显示出停车位编号及其所在的楼层。

代替存储每个级别的数据。仅制作一个停车位模型,并在其中显示其所在的高度。 因此,该模型将类似于:

spotNumber: {
  occupied: false,
  type: "large",
  level: 1
}

希望这会有所帮助