我正在尝试更新集合中的元素。它是一个二维数组。我尝试直接修改它,尝试更新整个数组结构,并尝试使用set方法。没有什么能给我成功。
这是我的模特:
var nestedInside = mongoose.Schema({
x: Number,
y: Number,
block: {
type: Boolean,
default: false
},
answer: String,
question: String,
questionnr: Number,
vertical: Boolean,
questionnr2: Number,
question2: String,
vertical2: Boolean,
tmp: String,
question_vertical: String,
question_horizontal: String,
question_num: Number
})
var schema = mongoose.Schema({
grid: [[nestedInside]]
})
var create = mongoose.model('puzzles', schema);
这是我执行以下代码时的错误:
puzzle.findOne({_id:req.params.id}).exec(function(err,data) {
var grid = data.grid;
grid[req.body.xo].id(req.body._id)["question_vertical"] = req.body.question_vertical
data.save();
errorMongoError: Cannot create field 'question_vertical' in element {0: [ { block: false, _id: ObjectId('5dec2f1dde95855cf9130f50')...
当我尝试替换整个数组时,它说:强制转换为值失败
有人知道吗?我没有选择,我知道。
样本数据:
"_id":{
"$oid":"5da1097076a05f2c50f34001"
},
"free":false,
"package":{
"$numberInt":"6"
},
"grid":[
[
{
"block":false,
"_id":{
"$oid":"5da1097076a05f2c50f34008"
},
"x":{
"$numberInt":"1"
},
"y":{
"$numberInt":"1"
},
"answer":"G",
"question_num":{
"$numberInt":"1"
},
"question_vertical":"Abk.: Grundgesetz",
"question_horizontal":"kostenlos"
},
....
]
],
....
答案 0 :(得分:0)
您说过更新了阵列结构。您是否从数据库中删除了旧项目(甚至更好地删除了当前数据库)?否则,这可能导致错误的文档解析(Mongoose - Redefining schema structure)。
答案 1 :(得分:0)
好吧,我想出了一个解决方案,或者说是一种解决方法。
我克隆了整个文档,删除了旧的文档,然后再次保存了克隆的文档。这很好。只适合可能遇到相同问题的人。