我试图以动态的方式在我的一个集合上创建一个列表,这是一个例子。
var user = mongoose.Schema({
"NAME": String,
"LAST": String,
"EMAIL": String,
"TasksUploaded": {}
})
我想在mongoose中做的是用他已经上传的任务更新用户,最好的方法是什么?我最终想要的是:
{
"Name" : "John",
"Last" : "Doh",
"Email" : "john@doh.com",
"TasksUploaded" : {
"Task" : "Task A"
"Task" : "Task B"
"Task" : "Task H"
"Task" : "Task F"
"Task" : "Task C"
}
}
正如您所看到的,任务并不总是连续的,用户可以根据需要上传任务。
我对所有这些新的NoSQL和MongoDB都很陌生,所以如果你能说出最好的做法我会很感激。
这是我目前更新它的方式,但会发生的是" Level"被替换,你需要在docuemnt中添加一个新行。
User.findOneAndUpdate({ _id: id}, { $set: { 'TasksUploaded.Task': req.body.task} }, { returnNewDocument: true, new: true }, function (err, result) {
if (err) {
console.log("Error saving task: " + err);
return;
}
console.log(result);
})
}
答案 0 :(得分:0)
不,那是不可能的。您不能在对象中使用多个具有相同名称的键。试想一下,你会如何解决这些问题?
您似乎需要重新构建数据并使用数组。
答案 1 :(得分:0)
感谢@Sam,
我修改了我的结构,以数组的形式添加上传任务
TasksUploaded ["TaskA","TaskB","TaskC"]
谢谢