mongodb - 如何通过 MongoDB 中的嵌套字段连接到集合
问题描述
我正在努力处理 MongoDB 中的一些查询。假设我有一个看起来像
{
"competitions: {id: "1", name:"someLeague"},
"standings": [
{
"type": "TOTAL",
"table": [
{
"position": "1",
"team": {
"id": "123",
"name": "XYZ"
},
won: "1",
draw: "2",
lost: "3",
points: "4",
},
{
"position": "2",
"team": {
"id": "321",
"name": "ABC"
}
...
以及看起来像的灯具系列
{
matchDay: "YYYY-MM-DD",
homeTeam: {id: "123", name:"ABC"},
awayTeam: {id: "321", name:"XYZ"},
}
是否可以通过这种方式将这两个集合连接起来,即灯具集合中的“homeTeam”字段将包含所有信息,包括积分、赢得比赛等来自积分榜的总类型?与 field awayTeam 相同,条件是球队的信息将来自排名类型为 away 的数组。
解决方案
在 MongoDB 中,无法在集合 B 中引用集合 A 的文档,以便find
对集合 B 的查询自动提供所引用文档的属性。但是,从 MongoDB 3.2 开始,可以在查询期间在多个集合上使用$lookup
命令作为aggregation
(参见https://stackoverflow.com/a/33511166/3976662)JOIN(类似于标准 SQL)的一部分。在您的情况下,您可以考虑$lookup
结合使用$unwind
- 类似于MongoDB 文档中的示例。Spring Data Mongo$lookup
从 1.10 开始支持。
推荐阅读
- sulu - 如何在块内容类型中使用复选框内容类型以及如何从 Sulu-minimal 中的块内容类型中获取复选框的值?
- android - 预期开始数组,但开始对象
- c - 有没有办法在找到句点 (.) 之前读取文件流。然后重复?
- android - 不能将 Class.forName() 与 v4.app.Fragment 一起使用
- json - “不正确的 JSON 格式”
- azure - 如何在 Azure Functions 消费计划中打开 Kudu 控制台?
- android - GSON 未在发布模式下将 JSON 数组转换为 Java 对象数组
- python - 如何在python中访问csv文件中的某个条目?
- javascript - 在联系表 7 中上传进度条
- c# - 对于 UInt64,值要么太大要么太小。