寻求帮助 -- 查询 MongoDB
Looking for some help -- Querying MongoDB
我是 MongoDB 的新手,我正在尝试查询我导入的一些数据。我昨天和今天又试了几个小时,我的理解取得了进展,但仍然一无所获。我尝试从博客、Whosebug、youtube 甚至 MongoDB 网站一步一步地进行操作,但仍然无法将其正确转换为我的数据。我希望有人能给我指明正确的方向,而不是找人为我编写代码。这是我正在做饭的东西:
数据片段:
{'_id': ObjectId('608dd1a2abf9c97d8d771c41'),
'competition': {'area': {'id': 2072, 'name': 'England'},
'code': 'PL',
'id': 2021,
'lastUpdated': '2021-04-17T02:20:14Z',
'name': 'Premier League',
'plan': 'TIER_ONE'},
'filters': {},
'season': {'currentMatchday': 34,
'endDate': '2021-05-23',
'id': 619,
'startDate': '2020-09-12',
'winner': None},
'standings': [{'group': None,
'stage': 'REGULAR_SEASON',
'table': [{'draw': 5,
'form': 'W,W,L,W,W',
'goalDifference': 47,
'goalsAgainst': 24,
'goalsFor': 71,
'lost': 4,
'playedGames': 34,
'points': 80,
'position': 1,
'team': {'crestUrl': 'https://crests.football-data.org/65.svg',
'id': 65,
'name': 'Manchester City FC'},
'won': 25}}
我想要达到的目标:
我试图查询 standings.table.team.name 但没有成功。我退后一步,开始专注于查询 competition.name.
我尝试过的:
我使用 Python 使用以下查询尝试的一些(不是全部)事情:
db.standings.find_one( {'standings.table.team.name': "Manchester City FC"})
db.standings.find_one( {'standings.table.team.name': 'Manchester City FC'})
db.standings.find_one( {'competition.name': "Premier League"})
db.standings.find_one( {"competition.name": 'Premier League'})
db.standings.find_one( {'competition.name': 'Premier League'})
db.standings.find_one( {"competition.name": "Premier League"})
-- 这里是我所有的结果 returns 数据库中的所有数据。
在 MongoDB 罗盘中进行的尝试 UI:
手动输入过滤器:{'competition.name':'Premier League'}
手动输入过滤器:{"competition.name": 'Premier League'}
手动输入过滤器:{'competition.name': "Premier League"}
手动输入过滤器:{'standings.table.team.name':'Manchester City FC'}
手动输入过滤器:{'standings.table.team.name': "Manchester City FC"}
我转到 Schema 并导航添加了英超联赛和曼城足球俱乐部的过滤器。然后回到文件,仍然没有运气。我要么没有得到任何返回,要么没有得到数据库中的所有数据。我无法只获取此字段。
我也在 Mongo Shell 中尝试过,但是我上面使用的语法几乎是我在 shell 中不断重复的语法,但仍然没有成功。
我能得到任何帮助或指导吗?我确实尝试过研究和尝试不同的变化和组合,但仍然一无所获。
如果我没理解错的话,您只想接收选定的 keys/values 查询。你能证实吗?在这种情况下,请尝试参考 findOne 的文档 - 您需要定义投影,即您想要 returned 的字段,否则您将获得所有字段(如果过滤器不够)。
我假设您正在使用 PyMongo。 Please see here for documentation, find_one
似乎使用与 find
.
相同的参数
也许您可以尝试 db.standings.find_one( {'competition.name': 'Premier League'}, {'competition.name': 1})
- 这应该 return 一个与过滤器匹配并包含 competition.name
字段的对象。
试试这个:
db.standings.find({
"standings.table.team.name": "Manchester City FC"
})
我是 MongoDB 的新手,我正在尝试查询我导入的一些数据。我昨天和今天又试了几个小时,我的理解取得了进展,但仍然一无所获。我尝试从博客、Whosebug、youtube 甚至 MongoDB 网站一步一步地进行操作,但仍然无法将其正确转换为我的数据。我希望有人能给我指明正确的方向,而不是找人为我编写代码。这是我正在做饭的东西:
数据片段:
{'_id': ObjectId('608dd1a2abf9c97d8d771c41'),
'competition': {'area': {'id': 2072, 'name': 'England'},
'code': 'PL',
'id': 2021,
'lastUpdated': '2021-04-17T02:20:14Z',
'name': 'Premier League',
'plan': 'TIER_ONE'},
'filters': {},
'season': {'currentMatchday': 34,
'endDate': '2021-05-23',
'id': 619,
'startDate': '2020-09-12',
'winner': None},
'standings': [{'group': None,
'stage': 'REGULAR_SEASON',
'table': [{'draw': 5,
'form': 'W,W,L,W,W',
'goalDifference': 47,
'goalsAgainst': 24,
'goalsFor': 71,
'lost': 4,
'playedGames': 34,
'points': 80,
'position': 1,
'team': {'crestUrl': 'https://crests.football-data.org/65.svg',
'id': 65,
'name': 'Manchester City FC'},
'won': 25}}
我想要达到的目标: 我试图查询 standings.table.team.name 但没有成功。我退后一步,开始专注于查询 competition.name.
我尝试过的: 我使用 Python 使用以下查询尝试的一些(不是全部)事情:
db.standings.find_one( {'standings.table.team.name': "Manchester City FC"})
db.standings.find_one( {'standings.table.team.name': 'Manchester City FC'})
db.standings.find_one( {'competition.name': "Premier League"})
db.standings.find_one( {"competition.name": 'Premier League'})
db.standings.find_one( {'competition.name': 'Premier League'})
db.standings.find_one( {"competition.name": "Premier League"})
-- 这里是我所有的结果 returns 数据库中的所有数据。
在 MongoDB 罗盘中进行的尝试 UI:
手动输入过滤器:{'competition.name':'Premier League'}
手动输入过滤器:{"competition.name": 'Premier League'}
手动输入过滤器:{'competition.name': "Premier League"}
手动输入过滤器:{'standings.table.team.name':'Manchester City FC'}
手动输入过滤器:{'standings.table.team.name': "Manchester City FC"}
我转到 Schema 并导航添加了英超联赛和曼城足球俱乐部的过滤器。然后回到文件,仍然没有运气。我要么没有得到任何返回,要么没有得到数据库中的所有数据。我无法只获取此字段。
我也在 Mongo Shell 中尝试过,但是我上面使用的语法几乎是我在 shell 中不断重复的语法,但仍然没有成功。
我能得到任何帮助或指导吗?我确实尝试过研究和尝试不同的变化和组合,但仍然一无所获。
如果我没理解错的话,您只想接收选定的 keys/values 查询。你能证实吗?在这种情况下,请尝试参考 findOne 的文档 - 您需要定义投影,即您想要 returned 的字段,否则您将获得所有字段(如果过滤器不够)。
我假设您正在使用 PyMongo。 Please see here for documentation, find_one
似乎使用与 find
.
也许您可以尝试 db.standings.find_one( {'competition.name': 'Premier League'}, {'competition.name': 1})
- 这应该 return 一个与过滤器匹配并包含 competition.name
字段的对象。
试试这个:
db.standings.find({
"standings.table.team.name": "Manchester City FC"
})