为什么Mongoose(MongoDB)在保存后重新排序我的数组?

时间:2016-12-03 14:41:38

标签: node.js mongodb mongoose

我有一个包含以下数据的seeds.js文件:

var newBus = new Bus({
  am: {
    route: [
      {
        coords: {lat: 35.645329, lng: -84.068154},
        address: "5408 Hutton Ridge Rd"
      }
  }
}

当我打电话

newBus.save(function(err, data) {
    if (err) throw err;
    else console.log(data);
});

它将它存储为:

"am" : {
    "route" : [
        {
            "address" : "5408 Hutton Ridge Rd",
            "coords" : {
                "lng" : -84.068154,
                "lat" : 35.645329
            }
        }
    ]
}

我刚注意到它将lat, lng的顺序更改为lng, lat。我不认为这很重要,但是当我对种子数据进行更新时,更新只有在我找到与特定lng, lat匹配的数组时才有效。当我尝试找到与lat, lng匹配的内容时,它无法正常工作。

那么为什么MongoDB / Mongoose会对数据进行重新排序?

1 个答案:

答案 0 :(得分:0)

这不是一个数组,它是一个字典(javascript中的对象)。这不存储任何订单。它在文档中说。

您可以在此处详细了解:http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf(第4.3.3节)

说:

  

对象

     

对象是Object类型的成员。这是一个无序   属性集合,每个属性包含原始值,   对象或功能。存储在对象属性中的函数是   称为方法。