【发布时间】:2021-01-23 12:24:43
【问题描述】:
我想用 $group 优化 MongoDB 查询聚合,$match 部分非常快,但是当我尝试按坐标对数据进行分组并推入数组 2 个字段时,请求非常慢,逻辑上。但是可以优化 $group 部分吗?我已经在使用 allowDiskUse
详情:
MongoDB 版本:4.0.10
内存:32GO
执行时间:25秒
文件数量:10 826 222
这里是查询:
[
{
"$match": {
"$or": [
{
"$and": [
{
"$or": [
{
"aliments.fruits": "banana"
},
{
"parents": {
"$in": [
"banana"
]
}
}
]
}
]
},
{
"aliments": {
"$in": [
"banana"
]
}
}
]
}
},
{
"$group": {
"_id": {
"coordinates": "$coordinates"
},
"File": {
"$push": {
"Id": "$_id",
"Paths": "$path"
}
}
}
}
],{allowDiskUse : true}
数据示例:
{
"_id" : ObjectId("5f7ed5907e170000b2005fa5"),
"path" : "C:\\photos\\test_file_20.docx",
"text" : "banana is good",
"type" : "text",
"page" : 1,
"aliments" : {
"fruits" : "banana",
"vegetable" : "bean"
},
"parents" : [
"banana",
"coco",
"orange"
],
"coordinates" : {
"type" : "Point",
"coordinates" : [
48.8534,
2.3488
]
},
"date" : ISODate("2020-10-08T09:02:08.700Z"),
"name" : "test_file_20",
}
数据库统计:
{
"db" : "505cef81-5d89-44f6-80ad-4721e93d9715",
"collections" : 4,
"views" : 0,
"objects" : 14,
"avgObjSize" : 5568.64285714286,
"dataSize" : 77961.0,
"storageSize" : 118784.0,
"numExtents" : 0,
"indexes" : 4,
"indexSize" : 69632.0,
"fsUsedSize" : 228811964416.0,
"fsTotalSize" : 254930128896.0,
"ok" : 1.0
}
【问题讨论】:
-
你能提供你的数据样本吗?
-
当然!我做到了
标签: mongodb performance query-performance