如何在 3.0.4 版的 mongo db 中将 arrayIndex 位置添加到展开的文档



具有聚合:

{
  $unwind:
    {
      path: <field path>,
      includeArrayIndex: <string>,
      preserveNullAndEmptyArrays: <boolean>
    }
}

目前,我在mongodb版本中使用这个"$unwind"概念 3.2.It 工作正常。但是在生产中,我有 mongodb 版本 3.0.4。如何在 3.0.4 版本中使用此概念?

任何人都可以帮助我解决这个问题...

有两种

方法可以修复它。

  1. 升级 :-)
  2. 更改文档结构以添加position值 - 它将充当一种条目 ID 字段 - 请参阅下面的代码片段:

在 forEach 循环中更改文档结构:

  db.dev777_copy.find({}).forEach(function (doc) {
    var empArraySize = doc.employees.length;
    for (var i = 0; i < empArraySize; i++) {
        var innerArraySize = doc.employees[i].Salary.length;
        for (var j = 0; j < innerArraySize; j++) {
            doc.employees[i].Salary[j] = {
                position : NumberInt(j),
                value : doc.employees[i].Salary[j]
            };
        }
    }
    db.dev777_copy.save(doc);
})

然后我们的文档将获得新的形状:

{
    "_id" : ObjectId("57862763a63c006944fb508b"),
    "employees" : [{
            "empId" : 100.0,
            "Salary" : [{
                    "position" : 0,
                    "value" : 1000.0
                }, {
                    "position" : 1,
                    "value" : 2000.0
                }, {
                    "position" : 2,
                    "value" : 3000.0
                }
            ]
        }, {
            "empId" : 101.0,
            "Salary" : [{
                    "position" : 0,
                    "value" : 3000.0
                }, {
                    "position" : 1,
                    "value" : 4000.0
                }, {
                    "position" : 2,
                    "value" : 500.0
                }
            ]
        }
    ]
}

相关内容

  • 没有找到相关文章

最新更新