MongoDB使用另一个字段的值添加新字段

时间:2020-01-25 22:58:26

标签: mongodb

如何从此更新收藏夹中的所有文档:

{ 
    "_id" : "16-00-003", 
    "pickUpPlace" : {
        "place_id" : "someId", 
        "latitude" : 21.912363052368164, 
        "longitude" : 24.804792404174805
    }
}

对此:

{ 
    "_id" : "16-00-003", 
    "place_id" : "someId", 
    "location" : [21.912363052368164, 24.804792404174805]        
}

1 个答案:

答案 0 :(得分:0)

MongoDB aggregation操作处理数据记录并返回计算结果。

db.collection.aggregate([
  {
    $project: {
      "_id": 1,
      "place_id": "$pickUpPlace.place_id",
      "location": [
        "$pickUpPlace.latitude",
        "$pickUpPlace.longitude"
      ]
    }
  }
])

如何更新

  1. 。如果数据量很少,则可以遍历结果并将其保存到同一集合中:

db.collection.aggregate([...]).forEach(function(doc){
    db.collection.save(doc);
})

  1. 快速$out or $merge运算符获取聚合管道返回的文档,并将其写入指定的集合(您不能在源集合内部插入)。

技巧部分:在新集合中写入结果并删除旧集合。


db.collection.aggregate([
  {
    $project: {
      "_id": 1,
      "place_id": "$pickUpPlace.place_id",
      "location": [
        "$pickUpPlace.latitude",
        "$pickUpPlace.longitude"
      ]
    }
  },
  { $out : "collection2" }
])