使用 Mongoose 在 MongoDB 中保存文档时如何保留字段顺序?
How can the order of fields be preserved while saving a document in MongoDB with Mongoose?
我们正在尝试将位置日志保存在一个集合中。猫鼬模式定义如下 -
{ user: { type: String, required: true }, location: { longitude: {type: Number}, latitude: type: { type: Number}}
我们通过代码保存位置日志(用法如下)-
Model.findOneAndUpdate({user: 1},
{location:{longitude: 9.0, latitude: 10.0}},
function(err) {...});
通过3T MongoChef查询数据库,发现location对象保存顺序不一致,导致地理位置索引错误。即使两个用户具有相同的位置,我们也只会得到键的排序格式为 (latitude, longitude)
的结果。
不确定这不是错误。但是你可以在 presave
hook:
中重新组装位置
schema.pre('save', function(next) {
this.location = {
latitude: this.location.latitude,
longitude: this.location.longitude,
};
next();
});
希望对您有所帮助。
我们正在尝试将位置日志保存在一个集合中。猫鼬模式定义如下 -
{ user: { type: String, required: true }, location: { longitude: {type: Number}, latitude: type: { type: Number}}
我们通过代码保存位置日志(用法如下)-
Model.findOneAndUpdate({user: 1},
{location:{longitude: 9.0, latitude: 10.0}},
function(err) {...});
通过3T MongoChef查询数据库,发现location对象保存顺序不一致,导致地理位置索引错误。即使两个用户具有相同的位置,我们也只会得到键的排序格式为 (latitude, longitude)
的结果。
不确定这不是错误。但是你可以在 presave
hook:
schema.pre('save', function(next) {
this.location = {
latitude: this.location.latitude,
longitude: this.location.longitude,
};
next();
});
希望对您有所帮助。