【发布时间】:2017-12-04 07:24:26
【问题描述】:
下面是我存储在 Azure MongoDB 中的 JSON 结构(粘贴了示例结构),我想使用 Plyrs 中存在的 userID 元素进行查询( Sub Sub 文档)获取用户参加过的所有锦标赛的列表。
我已尝试使用 Aggregate() 但未成功。请纠正我 如果我遗漏了一些东西,下面是它的代码。
尝试使用构建器但未成功,使用构建器我最多可以检索一个级别(子集合,json(粘贴在下面)引用到 tbls )在那里我可以在 Plyrs(子子集合)上查询的任何方式。
Azure MongoDB 是否支持 Aggregate() 或计数而不获取整个文档?
请指导我聚合
var count = sampleMongoDataBase.GetCollection<GameInfo>(sampleCollectionName).Aggregate()
.Unwind<GameInfo, TableDocumet>(t => t.Tables)
.Unwind<TableDocumet, PlayerDocument>(p => p.Players)
.Match(x => x.UserID == "3fd30fa8-f5c5-4311-8741-4032142bbb33")
.Group(new MongoDB.Bson.BsonDocument { { "id", "$Plyrs._id" }, { "count", new MongoDB.Bson.BsonDocument("$sum", 1) } });
建设者
mongoDataBase.GetCollection<GameInfo>(mongoCollectionName).Find(Builders<GameInfo>.Filter.ElemMatch(x => x.Tables,t => t.TableId == 1)).Count();
错误: 命令聚合失败:不支持“$group”。
JSON:
`
{
"TnId": 651,
"QnId": "7a5de5dc-b02f-4013-9d02-ebf8430e7a56",
"samt": 10,
"tbls": [
{
"TblId": 1,
"Plyrs": [
{
"_id": 1048995,
"UserId": "FC381A6D717B6973-711BD743AE90E6D7",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Roman Yates",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1048996,
"UserId": "fc3e0971-2c3c-e697-b68a-33b12a207bc2",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Neil Gaines",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1048997,
"UserId": "FC369812-6DC04066-A133-1C10EEBA1546",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Lori Reyes",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1048998,
"UserId": "FC2AC461-C7FAD800D3D79A2CD2680C72",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Duane Hoffman",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1048999,
"UserId": "FC39AFCF-688C-B61A-A0DB-80EADAC832CD",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Alfredo Ware",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049000,
"UserId": "FC2B863D-9ACC-13C706EA-8E31917566DB",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Abigail Riddle",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
}
]
},
{
"TblId": 2,
"Plyrs": [
{
"_id": 1049001,
"UserId": "FC2BCC93-DDAE-4622-8D1226BDF1181D63",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Rene Spence",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049002,
"UserId": "FC3D0CF42017-C3BFF460-E8DBDE3D1D77",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "TU006918",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049003,
"UserId": "FC2CDE495F34E557-77C8-4B10981B7758",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Marshall Lutz",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049004,
"UserId": "FC3EE1FDB4913FF345AE90CD14BE3607",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Roberto Burton",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049005,
"UserId": "FC378E3C-C2A0528F094A-7FB31BD9D278",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Summer Stephenson",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
},
{
"_id": 1049006,
"UserId": "FC431BBB-A79D45A0EAB034676C755E5A",
"St": 3,
"PCS": 2,
"ConnId": null,
"DN": "Terence Fischer",
"RB": 2,
"LL": 1,
"Chips": 5000,
"Rank": 46,
"ExitLvl": 0,
"TRA": 0,
"PRI": "",
"IsAns": false
}
]
}
输出: 例如,计数:5
【问题讨论】:
-
您能否澄清一下这是本机 MongoDB 还是带有 MongoDB API 的 CosmosDB?您没有显示任何错误输出,因此无法判断。
-
嗨,David Makogon,它是带有 MongoDB API 的 CosmosDB。使用 C#.Net 命令聚合在 Cosmos 上查询失败时出现此错误:不支持“$group”。
-
您必须在 Azure 门户(预览功能窗格)上为您的 Cosmos DB MongoDB API 帐户打开聚合管道。
-
@user3270152 - 请查看我的更新答案,这反映了聚合管道现在是受支持的功能这一事实。
标签: mongodb azure azure-cosmosdb