我在mongodb中有一个字段是字符串.{"field": "some text"},我想把它们都转换成array.{"field": ["some text"]}

我知道我可以循环浏览所有文档,获取字段,然后更新,但我想知道是否有更干净的方法.

谢谢

推荐答案

您可以在map/Reduce的Reduce函数中完成这项工作,以保持mongodb中的所有处理.基本上,您可以使用map/reduce将结果放入一个新集合,然后将它们复制回旧集合(或者删除旧集合并重命名新集合).这样做的好处是将所有内容都保存在mongo中.

Update:另一个 Select 可能是使用db.eval.db.eval在服务器上执行,因此更新将在服务器上完成,而不会产生任何流量/延迟.

我认为唯一的另一个 Select 是如您所描述的那样——通过查询和更新每个选项在客户机上实现.

Mongodb相关问答推荐

在MongoDB中使用explain()和查询时缺少winningPlan''''

如何将数组$拉到对象数组下

在MondoDB中:将对象数组从切片索引数组切片,并通过聚合推入数组

MongoDB $lookup 查找字段值数组

Golang中的Mongo中值运算

Mongo 将一个数组链接到另一个数组

如何使用指南针连接到 mongodb replicaset (k8s)

mongoDB 过滤、排序和排名结果

mongodb:多键索引 struct ?

如何更新 mongodb 文档以向数组添加新元素?

Mongo DB中的Upserting和Id问题

如何按季度分组日期?

MongoDB - 投影一个并不总是存在的字段

MongoDB - 我如何找到另一个集合中的文档未引用的所有文档

在 mongoDB 中展平嵌套的 JSON struct

Ruby 按键值分组哈希

如何使用 MongoDB C# 驱动程序有条件地组合过滤器?

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

我需要手动关闭mongoose连接吗?

如何使用 mongodb-java-driver 进行 upsert