MongoDB - 加载文档子集以进行查询

Posted

技术标签:

【中文标题】MongoDB - 加载文档子集以进行查询【英文标题】:MongoDB - Load a subset of documents for querying 【发布时间】:2016-05-10 19:44:05 【问题描述】:

我有一个包含多个客户、月份等的集合。

每个月我都需要对集合运行一系列查询以检索指标 - 基本上是一堆计数。

这些查询中的大多数都有相同的 4 或 5 个过滤器,另外还有 1-2 个过滤器会随每个查询而变化。

//standard filters:

 client: "ABC Corp",
  environment: "Production",
  device: "true",
  registered: "true"


//special filters:

 type: "typeA",
  screen: "screen1"   

 type: "typeA",
  screen: "screen2"   

在 MSSQL 中,我将创建一个包含 4 个标准过滤器的视图,并重复查询该视图,应用额外的 1-2 个过滤器来检索所需的指标。

关于我可以使用什么 MongoDB 或基本 JS 方法的任何建议?我的目标是避免使用相同的标准过滤器一遍又一遍地点击集合。

谢谢 V

【问题讨论】:

【参考方案1】:

您可以在聚合框架中使用 $out 运算符来实现这一点。

$outstage 可以将结果输出到新的集合中

例如:

db.collection.aggregate([
  
    $match:
      
        client: "ABC Corp",
        environment: "Production",
        device: "true",
        registered: "true"
      
  ,
  
    $out: "new_collection"
  
])

然后您可以在 new_collection 上运行其他查询。

您的“视图”集合每次在 $out 阶段使用时都会重新创建,但您在该集合上定义的任何索引都将保持不变。

【讨论】:

以上是关于MongoDB - 加载文档子集以进行查询的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB安装和入门

MongoDB 遇见 spark(进行整合)

MongoDB 遇见 spark(进行整合)

mongodb查询以将子文档显示为主文档并使用它进行分页

03 MongoDB文档的各种增加更新删除操作总结

04 MongoDB各种查询操作 以及聚合操作总结