Mongodb查找范围不同的值



我有一个mongodb数据库,其中有两个集合——elementspropertieselements看起来像这样-

{ _id: "someElementId", name: "Iron", type: "metal" }

properties看起来像这样-

{ _id: "somePropertyId", propName: "molecular weight", propType: "number", unit: null }

每个CCD_ 5可以具有多个CCD_。例如,iron可以具有属性molecular weightcoloratomic weight等。

为此,我创建了另一个集合,在那里我存储了元素id和相应的属性id及其值-

{ elementId: "someElementId", propId:  "somePropertyId", value: 55.845 }

现在,我想查找数据库中所有唯一属性的名称及其值的范围。例如,如果1是对应于上述属性的最低值,而100是最高值,我想要类似的东西

[ { name: "molecular weight", range: { min: 1, max: 100 } } ]

我可以获得不同的属性并对它们进行迭代以获得范围,但我想知道是否有更好的方法。或者这种表结构不够有效?

请检查这是否适用于您:

db.collection.aggregate([
{
$group: {
_id: "$propId",
min: {
$min: "$value"
},
max: {
$max: "$value"
}
}
},
{
$lookup: {
from: "properties",
localField: "_id",
foreignField: "_id",
as: "name"
}
},
{
$unwind: "$name"
},
{
$project: {
_id: 0,
"name": "$name.propName",
"range": {
"min": "$min",
"max": "$max"
}
}
}
])

Mongo游乐场

相关内容

  • 没有找到相关文章

最新更新