我有一个configuration
集合,其中包含以下字段:
1) Model
2) Threshold
在上面的集合中,为每个模型给出了一定的阈值,如下所示:
'model1' 200
'model2' 400
'model3' 600
还有另一个名为customer
的集合,其中包含以下字段:
1)model
2)customerID
3)baseValue
在上面的集合中,数据如下:
'model1' 'BIXPTL098' 300
'model2' 'BIXPTL448' 350
'model3' 'BIXPTL338' 500
现在,我需要获取特定模型baseValue
的客户记录数大于configuration
集合中该特定模型的阈值。
示例:对于上述演示数据,查询应返回1,因为baseValue(300)
中只有一个客户(BIXPTL098)Threshold(200)
大于model(model1)
configuration
{1}}
configuration
集合中有数千条记录。任何帮助表示赞赏。
答案 0 :(得分:1)
门槛多久会改变一次?如果它不经常更改,我会在每个文档上存储模型threshold
和客户baseValue
之间的差异。
{
"model" : "model1",
"customerID" : "BIXPTL098",
"baseValue" : 300,
"delta" : 100 // customer baseValue - model1 threshold = 300 - 200 = 100
{
并查询delta
> 0
db.customers.find({ "delta" : { "$gt" : 0 } })
如果threshold
频繁更改,最简单的选择是逐个模型计算超出模型阈值的客户文档:
> var mt = db.models.findOne({ "model" : "model1" }).threshold
> db.customers.find({ "model" : "model1", "baseValue" : { "$gt" : mt } })