【发布时间】:2018-08-05 16:23:40
【问题描述】:
我将一个数据库导入 mongodb,如下所示:
{
other values,
"addresses" : [
{
"_id" :
"createdAt" :
"likes" :
"type" :
"route" :
"country" :
"administrative_area_level_1" :
"administrative_area_level_2" :
"locality" :
"postal_code" :
"street_number" :
}
],
other values
}
我想向数据库添加一个新属性,从而创建这个架构:
const schema = new Schema({
addresses: [{
route: String,
coordinates:[{
coordsSet: {
type: Boolean,
default: false
},
lat: String,
lon: String
}]
}],
name: String,
});
虽然我可以通过 ID 找到记录,但我无法在调用 google API 后为新记录设置坐标。我是这样做的:
baza.findOneAndUpdate({ "addresses._id": response.id }, {$set: {"addresses.coordinates[0].lat": response.lat}}).then((update) =>{
res.send(update);
})
但我无法做到这一点。 res.send 显示我创建了"coordinates": [],但是我无法设置它。
当我想在地址对象之外添加这些新属性时,我没有这个问题,所以我想我在嵌套一些信息时失败了。我做错了什么?
【问题讨论】:
-
将
$set用引号括起来,就像"$set"。请看this问题 -
行为没有任何变化
-
您可以尝试使用
findByIdAndUpdate看看行为是否有任何不同吗? -
刚刚尝试过,行为也没有变化。我只是不明白为什么它在地址之外而不在地址内部起作用
-
你能提供
other_values在 Mongo 中的表现吗?所以只需复制结构并省略任何敏感的值