我在MongoDB 3.2.11中有一个集合(名为 menucategories ):
{
"_id" : ...
"menus" : [
{
"code":0
},
{
"code":1
},
{
"code":2
},
{
"code":3
}
]
},
{
"_id" : ...
"menus" : [
{
"code":4
},
{
"code":5
},
{
"code":6
},
{
"code":7
}
]
},
{
"_id" : ...
"menus" : [
{
"code":8
},
{
"code":9
},
{
"code":10
},
{
"code":11
}
]
}
每个 menucategory 都有名为菜单的数组。每个菜单(数组元素)都有代码。 ' 代码'菜单在每个菜单中都是唯一的。我想获得菜单代码的最大值(在这种情况下, 11 )。我怎样才能做到这一点?
答案 0 :(得分:3)
如果要从所有菜单代码中找到代码的最大值,则可能的查询将如下:
db.menucategories.aggregate([
{ $unwind: '$menus' },
{ $group: { _id: null, max: { $max: '$menus.code' } } },
{ $project: { max: 1, _id:0 } }
])
点击以下链接,了解有关不同运营商的更多信息:
答案 1 :(得分:0)
您不需要在此处使用@NgModule({
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
storeModule
],
declarations: [
AppComponent,
LoginComponent,
MenuComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
聚合管道运算符,因为从MongoDB 3.2开始,$unwind
阶段提供了一些accumulator expressions。
$project
回复之前删除的评论,您不需要将管道放入数组中,以便以下查询也能正常运行。
db.collection.aggregate([
{"$project": {"maxPerDoc": {"$max": "$menus.code"}}},
{"$group": {"_id": null, "maxValue": {"$max": "$maxPerDoc"}}}
])
答案 2 :(得分:-2)
尝试聚合:
db.collection.aggregate({ $group : { _id: 1, max: { $max: {$max : "$menus.code"}}}});
如果您只需要找到最大值,则无需任何放松。