【问题标题】:MongoDB: How To Save Returned Results To Another Collection?MongoDB:如何将返回的结果保存到另一个集合?
【发布时间】:2018-10-19 21:06:01
【问题描述】:

考虑以下几点:

我有一个名为 C_a 的 MongoDB 集合。它包含大量文档(例如,超过 50,000,000 个)。

为简单起见,我们假设每个文档都有以下架构:

{
    "username" : "Aventinus"
    "text": "I love StackOverflow!",
    "tags": [
      "programming",
      "mongodb"
    ]
}

使用文本索引,我可以返回所有包含关键字StackOverflow 的文档,如下所示:

db.C_a.find({$text:{$search:"StackOverflow"}})

我的问题如下:

考虑到上面的查询可能会返回数十万个文档,将返回的结果直接保存到另一个名为C_b 的集合中的最简单/最快的方法是什么?

注意:This 帖子解释了如何使用aggregate 查找精确 匹配项(即特定日期)。我有兴趣使用Text Index 保存所有包含特定 关键字的帖子。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    引用的答案是正确的。可以更新来自该答案的示例查询以使用您的条件:

    db.C_a.aggregate([
      {$match: {$text: {$search:"StackOverflow"}}},
      {$out:"C_b"}
    ]);
    

    来自$text 的 MongoDB 文档:

    如果在聚合中使用 $text 运算符,还适用以下限制。

    • 包含 $text 的 $match 阶段必须是管道中的第一个阶段。
    • 文本运算符在舞台中只能出现一次。
    • 文本运算符表达式不能出现在 $or 或 $not 表达式中。
    • 默认情况下,文本搜索不按匹配分数的顺序返回匹配的文档。在 $sort 阶段使用 $meta 聚合表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2021-11-20
      相关资源
      最近更新 更多