Sha*_*ams 5 mongodb mongodb-query aggregation-framework
我有一个查询来获取minimum query和maximum query下面的示例数据集.在我的情况下,字段名称是动态的,如下所示product_1,product_2...
{
"_id" : NumberLong(540),
"product_1" : {
"orderCancelled" : 0,
"orderDelivered" : 6
},
"product_2" : {
"orderCancelled" : 3,
"orderDelivered" : 16
},
"product_3" : {
"orderCancelled" : 5,
"orderDelivered" : 11
}
}
Run Code Online (Sandbox Code Playgroud)
我没有得到一个想法,我怎么能做到这一点蒙戈其中的字段名是动态的,意味着未来可能有其他的产品也得到创建为product_4和product_5为同一id.
我需要一个查询,它给出了最小值orderDelivered和最大值orderCancelled,例如在上面的文档中结果将是orderDelivered:16&orderCancelled:0.
谢谢你的想法.
您应该重组您的文档,以便所有产品文档都位于一个数组中:
{
"_id": NumberLong(540),
products: [
{
"name": "product_1",
"orderCancelled": 0,
"orderDelivered": 6
},
{
"name": "product_2",
"orderCancelled": 3,
"orderDelivered": 16
},
{
"name": "product_3",
"orderCancelled": 5,
"orderDelivered": 11
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后您将能够发出正常的最大/最小查询,如下所示:
db.test.aggregate([
{
$match: { "_id" : NumberLong(540) }
},
{
$unwind: "$products"
},
{
$group: {
_id: "$_id",
minDelivered: { $min: "$products.orderDelivered" },
maxCancelled: { $max: "$products.orderCancelled" }
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |