我们对应用程序进行了设计更改,以满足一些新的要求。设计更改迫使我们迁移mongodb集合中的一个,而不是具有单独的字段,必须创建派生的JSON字符串作为现有字段中的字段。
最终用户在UI中执行操作(如保存更改)将调用迁移过程。但是,这一个动作可能会更新数千个文档。所以我们想编写要在服务器端执行的Javascript代码,这样我们就可以避免将许多记录加载到应用程序中。
但是我们遇到的问题是,无法使用eval调用java脚本函数,因为集合是分片的。我们无法考虑的其他选项是使收集无分片,因为迁移必须在实时系统上进行。
如果您知道任何替代方法,请帮助我们。
示例迁移:ExampleDoc(集合)具有字段a1,a2,b1和b2。迁移将创建一个名为fieldJSON的新字段:{a:"",b:""}。这里a和b来自现有字段a1,a2,b1和b2。
答案 0 :(得分:1)
好的,现在我明白了
eval
数据库命令,因为它是分片集合; 然后,是否可以通过mapReduce
实现意图?
{out:{merge:<collectionName>, sharded:true}}
等参数来映射,缩小然后覆盖此集合的原始文档。