【发布时间】:2019-06-22 06:24:45
【问题描述】:
我的mongodb数据库结构如下:
[{"_id" : 1,
"main_array" : [{"subid" : 11,"date" : 2019-01-01,"details":[somearray]},
{"subid" : 12,"date" : 2019-01-02,"details":[somearray]},
{"subid" : 13,"date" : 2019-01-03,"details":[somearray]}]
},
{"_id" : 2,
"main_array" : [{"subid" : 21,"date" : 2019-01-01,"details":[somearray]},
{"subid" : 22,"date" : 2019-01-02,"details":[somearray]},
{"subid" : 23,"date" : 2019-01-03,"details":[somearray]}]
},
{"_id" : 3,
"main_array" : [{"subid" : 31,"date" : 2019-01-01,"details":[somearray]},
{"subid" : 32,"date" : 2019-01-02,"details":[somearray]},
{"subid" : 33,"date" : 2019-01-03,"details":[somearray]}]
}
]
“_id”代表user_id。文档随着用户的增加而增加。 “主数组”就像一个日志,其中包含每个用户每天的条目。我对某一天在场的所有用户的“详细信息”数组感兴趣。
我使用以下查询成功获得了结果:
dbase.collection("user_log").aggregate([
{$unwind : "$main_array"},
{$match : {"main_array.date" :2019-01-01}},
])
我怀疑这是我的查询优化了吗?由于我在管道的第一阶段使用 unwind,它可能会创建太多文档。当我的数据库大小增加时,这会是一个问题吗?或者有什么优化的方法吗?
我也对重组数据库的想法持开放态度(如果对重组提出建议,请说明当前模型可能出现的问题)。
【问题讨论】:
标签: node.js mongodb query-optimization