改变mongoose中参数的顺序

时间:2018-03-14 10:11:55

标签: node.js mongodb mongoose

我的模型中有以下结构:

geoLocation: {
  latitude: {
    type: Number
  },
  longitude: {
    type: Number
  }
}

我想将订单更改为:

geoLocation: {
  longitude: {
    type: Number
  },
  latitude: {
    type: Number
  }
}

问题是我有现有数据库,其中数据已存储为:

"geoLocation" : {
    "latitude" : 23.0720184,
    "longitude" : 72.54213399999999
}

我想改变顺序并希望将它们保存为:

"geoLocation" : {
    "longitude" : 72.54213399999999,
    "latitude" : 23.0720184
}

我正在使用mongodb的$centerSphere查询,它需要经度作为第一个参数。我试图改变模型中的顺序,但它不会影响数据库。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

有一种方法是使用aggregation。请寻找其他更好的选择。

使用$project$out我们可以先放置经度,mongodb代码段如下所示

db.collection_name.aggregate([{
    $project:{
      _id:1, 
      "project all other fields as shown for _id":1,
      // Changing part
      "geoLocation.longitude":"$geoLocation.longitude", 
      "geoLocation.latitude":"geoLocation.latitude"
    }},
      // Overwriting the same collection with latitude and longitude changed
    {$out: "collection_name"}]);