【问题标题】:Add a new field point type filed to a collection with value of an existing field将新的字段点类型归档到具有现有字段值的集合中
【发布时间】:2014-02-13 06:00:35
【问题描述】:

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

【问题讨论】:

    标签: mongodb spatial


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 2020-07-04
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      相关资源
      最近更新 更多