我有一个嵌套的对象映射,示例数据:
{
"_index": "simpleindex",
"_type": "games",
"_id": "AU_eC-Uzt6KxlUliF68N",
"_score": 1,
"_source": {
"continents": [
{
"name": "Asia",
"countries": [
{
"name": "India",
"states": [
{
"name": "TN",
"game": "soccor",
"wins": 1
}
]
},
{
"name": "India",
"states": [
{
"name": "KA",
"game": "soccor",
"wins": 1
}
]
}
]
}
]
}
},
{
"_index": "simpleindex",
"_type": "games",
"_id": "AU_eCf5dt6KxlUliF637",
"_score": 1,
"_source": {
"continents": [
{
"name": "Asia",
"countries": [
{
"name": "India",
"states": [
{
"name": "TN",
"game": "soccor",
"wins": 1
}
]
}
]
}
]
}
},
{
"_index": "simpleindex",
"_type": "games",
"_id": "AU_eDIdXt6KxlUliF69i",
"_score": 1,
"_source": {
"continents": [
{
"name": "Asia",
"countries": [
{
"name": "India",
"states": [
{
"name": "TN",
"game": "soccor",
"wins": 1
}
]
},
{
"name": "India",
"states": [
{
"name": "KA",
"game": "soccor",
"wins": 1
}
]
},
{
"name": "Pak",
"states": [
{
"name": "NA",
"game": "soccor",
"wins": 1
}
]
}
]
}
]
}
}
这是我的过滤汇总,可返回与过滤条件匹配的文档(即,大陆应为“亚洲”,国家应为“印度”):
{
"aggs": {
"DocumentSet": {
"filter": {
"and": {
"filters": [
{
"nested": {
"path": "continents",
"query": {
"match": {
"continents.name": "asia"
}
}
}
},
{
"nested": {
"path": "continents.countries",
"query": {
"match": {
"continents.countries.name": "india"
}
}
}
}
]
}
},
"aggs": {
"continents": {
"nested": {
"path": "continents"
},
"aggs": {
"countries": {
"nested": {
"path": "continents.countries"
},
"aggs": {
"states": {
"nested": {
"path": "continents.countries.states"
},
"aggs": {
"count": {
"value_count": {
"field": "continents.countries.states.wins"
}
}
}
}
}
}
}
}
}
}}}
这是结果(副本仅将聚合粘贴到此处):
"aggregations": {
"DocumentSet": {
"doc_count": 3,
"continents": {
"doc_count": 3,
"countries": {
"doc_count": 6,
"states": {
"doc_count": 6,
"count": {
"value": 6
}
}
}
}
}
}
我的意图是仅从中获得“胜利” continents.name=asia AND countries.name=india
。过滤器可以按预期工作,但是我只需要将聚合范围缩小到countries.name=india
;
本质上是Filter聚合返回的文档的作用域的另一个级别,因此叶聚合计数为5而不是6。
尝试以下聚合:
{
"aggs": {
"continents": {
"nested": {
"path": "continents"
},
"aggs": {
"asia_continent": {
"filter": {
"query": {
"match": {
"continents.name": "asia"
}
}
},
"aggs": {
"countries": {
"nested": {
"path": "continents.countries"
},
"aggs": {
"india_country": {
"filter": {
"query": {
"match": {
"continents.countries.name": "india"
}
}
},
"aggs": {
"states": {
"nested": {
"path": "continents.countries.states"
},
"aggs": {
"count": {
"value_count": {
"field": "continents.countries.states.wins"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
我在MonoDB集合中有100k个文档,有20k个文档/记录。我想查找该特定文档使用的内存。 请帮助我在MongoDB控制台中查找内存大小(MB)。
问题内容: 我有这些猫鼬模式: 如何返回所有带有最新消息子文档(限制1)的线程? 目前,我正在服务器端过滤结果,但出于性能考虑,我想在MongoDb中移动此操作。 问题答案: 您可以使用,,并使用类似以下方式进行操作:
假设我有以下JSON结构,我希望按性别分组,并希望在同一字段中返回多个文档值: 现在我知道我可以做这样的事情,但是我需要把年龄和名字合并到一个字段中。
我试图实现一种在Firestore中保持一致性的方法,但我需要一种找到重复数据存在的所有位置的方法。firestore中是否有方法查找其子集合包含具有特定文档ID的文档的所有文档?例如对于以下结构 我将使用什么查询来查找其“朋友”列表包含文档 ID 为 5678 的文档的所有用户 ID?例如,当用户 5678 决定更改他/她的姓名时?
版本 使用Elasticsearch 目的 此查询将返回直方图,但将返回所有文档中所有可用日期的桶。它不限制在特定的日期范围内。 我试过什么? 我尝试了很多方法来解决这个问题,但都失败了。*范围筛选器,然后直方图*日期范围聚合,然后直方图桶*使用with,完整日期,和时间戳*在直方图聚合内尝试范围筛选器 任何指导将不胜感激!谢了。
这是我的数据库结构。 城市->地标->景点(每一个都是一个集合) 查询 列出特定城市下的所有景点。