【问题标题】:How to split a mongodb collection into multiple collection based on a field如何根据字段将mongodb集合拆分为多个集合
【发布时间】:2020-06-20 02:49:50
【问题描述】:

我在 mongo 中有一个集合,我想根据键/字段“源”将该集合拆分为多个集合。 “来源”值应该是新的集合名称,其中包含属于该来源的文档。

{
"name": "Name"
"ph": {"phone": "1111"}
"source": "source1"
},
{
"name": "Name Last"
"ph": {"phone": "2121"}
"source": "source2"
}

如何在 mongodb 本身实现这一点? 提前致谢

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以在Mongo Shell 上运行以下脚本来实现它。

    var collectionName = "<CollectionName>"
    var distinctValues = db.getCollection(collectionName).distinct("source")
    var count = 0;
    for (var i = 0; i < distinctValues.length; i++) {
        var newCollectionName = collectionName.concat("_".concat(distinctValues[i]))
        db.getCollection(collectionName).aggregate([
            {
                "$match": {
                    "source": distinctValues[i]
                }
            },
            {
                "$out": newCollectionName
            }
        ], {
            allowDiskUse: true
        });
        printjson(++count);
    }
    printjson("DONE!!!")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2022-06-12
      • 2015-07-16
      • 1970-01-01
      相关资源
      最近更新 更多