将新的字段点类型字段添加到具有现有字段值的集合中

时间:2014-02-06 12:23:09

标签: mongodb spatial

我有一个巨大的mongodb集合,有600万条记录。我有两个字段(纬度,经度),我想在集合中添加第三个字段,其类型为点(空间)。如何在命令行或PHP中执行此操作?

1 个答案:

答案 0 :(得分:1)

您希望为集合中的所有文档添加一个新字段(具有相同的值),这可以通过update()操作轻松完成。请考虑以下shell示例:

db.collection.update(
  {},
  { $set: { type: "spatial" }},
  { multi: true }
);

这会将匹配空条件type(即所有内容)的所有文档的{}字段设置为“空间”,multi选项允许更新修改多个文档而不是只是匹配的第一个文档(默认行为)。

如果您只想将type字段设置为尚不存在,则可以调整标准,如下所示:

db.collection.update(
  { type: { $exists: false }},
  { $set: { type: "spatial" }},
  { multi: true }
);

由于您正在存储地理空间数据,因此您可能需要查看MongoDB的2dsphere indexes。这将允许您在文档中存储和索引格式正确的GeoJSON对象。有关此主题的更多介绍性信息,请参阅相关问题的this previous answer