【发布时间】:2015-01-18 13:15:25
【问题描述】:
我知道如何在查找结果之后对嵌入文档进行排序,但是如何在查找之前进行排序以便查询本身在排序后的数组上运行?我知道如果我使用聚合,这一定是可能的,但我真的很想知道没有它是否可行,以便我更好地理解它是如何工作的。
这是我的嵌入文档
"shipping_charges" : [
{
"region" : "region1",
"weight" : 500,
"rate" : 10
},
{
"region" : "Bangalore HQ",
"weight" : 200,
"rate" : 40
},
{
"region" : "region2",
"weight" : 1500,
"rate" : 110
},
{
"region" : "region3",
"weight" : 100,
"rate" : 50
},
{
"region" : "Bangalore HQ",
"weight" : 100,
"rate" : 150
}
]
这是我用来匹配“区域”和“权重”的查询,以获取该匹配项的定价..
db.clients.find( { "shipping_charges.region" : "Bangalore HQ" , "shipping_charges.weight" : { $gte : 99 } }, { "shipping_charges.$" : 1 } ).pretty()
这个查询当前返回给我
{
"shipping_charges" : [
{
"region" : "Bangalore HQ",
"weight" : 200,
"rate" : 40
}
]
}
它可能返回这个集合的原因是因为它在嵌入文档中出现(和匹配)的顺序。
但是,我希望这能将最后一组最匹配最接近重量的平板(100 克)返回给我
我的现有查询需要进行哪些更改,以便我可以在查找运行之前对嵌入文档进行排序以获得我想要的结果?
如果出于任何原因您确定没有 MPR 就无法完成,请告诉我,这样我就可以远离这种方法,只专注于 MPR 以获得所需的结果。
【问题讨论】:
标签: mongodb mongodb-query