我正在处理大量的包裹以进行跟踪。我有mongodb,其中每个用户都有不同的包裹。有超过20家公司(tnt,fedex,dhl等),每家公司只允许单一跟踪或批量跟踪(例如tnt = 1,fedex = 20和dhl = 10)
我正在尝试找到一种方法来排队跟踪作业,从而有效地使用批处理。例如,如果我有50个联邦快递作业,3个tnt作业和11个dhl作业,我想将它们排队,如下所示
[fedex job:[20 jobs]][fedex job:[20 jobs]][fedex job:[10 jobs]]
[tnt job:[1 job]][tnt job:[1 job]][tnt job:[1 job]]
[dhl job:[10 job]][dhl job:[1 job]]
我如何实现上述工作方案?
修改
我希望能够在一个或多个worker上运行beanstalkd。因此独立国家非常重要。 Beanstalkd工作应如下所示,
{
'slug':'fedex'
'trackingNumbers':[11,22,33....] //20
}
{
'slug':'tnt'
'trackingNumbers':[11,22,33....] //10
}
{
'slug':'dhl'
'trackingNumbers':[11] //1
}
{
'slug':'tnt'
'trackingNumbers':[11,22,33....] //10
}
{
'slug':'fedex'
'trackingNumbers':[11,22,33....] //20
},
{
'slug':'dhl'
'trackingNumbers':[11] //1
}
我真的不知道是否有MongoDB功能可以将每个用户的宗地聚合到上面的块中。
这是我的猫鼬模型
var UserSchema = mongoose.Schema({
email: {type: String, index: {unique: true, sparse: true}},
password: String,
createdOn: {type: Date, default:Date.now },
purchaseDate:Date,
expiryDate:Date,
purchaseID: {type: String, index: {unique: true, sparse: true}},
isEnabled: {type: Boolean,default: true}
});
UserSchema.virtual('parcels',{
ref: 'Parcel',
localField:'_id',
foreignField:'owner'
});
var ParcelSchema = mongoose.Schema({
owner : { type:mongoose.Schema.Types.ObjectId, ref: 'User' },
dna:String,
name: String,
count: {type: Number, default: 1},
trackingNumber: String,
slug:String,
isDelivered: {
type: Boolean, default: false
},
startDate: {type: Date, default:Date.now },
updateDate: Date,
finishDate: Date,
expectedDate: Date,
extra:String,
details:[{
_id:false,
message: String,
location: String,
date: Date,
status: Number
}]
});
答案 0 :(得分:1)
这是一个建议。您可以执行以下操作:
array:2 [▼
"folder1" => array:1 [▼
2016 => array:4 [▼
"2" => array:1 [▶]
"4" => array:2 [▶]
"3" => array:4 [▶]
"1" => array:4 [▶]
]
]
]
,fedex
等dhl
之前使用Beanstalkd的stats-tube <tube>
命令。 reserve
返回此队列中当前保留的作业数(命令的YAML输出中的字段stats-tube
)