这是节点js代码,我用它在单个数组中插入多个JSON文档。我使用此节点js代码并使用此架构在MongoDB中插入值。我已正确插入文档,但每次插入文档时都会创建一个包含所有值的新文档。
这是否可能每次我插入questionId得分和时间它将存储在测验数组内?否则,创建一个新的测验文档
mongodb中的数组。
例如[{"0":questionId:1,"score":1,"time":1-Sep-2016},{"1":questionId:2,"score":0,"time":1-Sep-2016}
....等]在测验数组中。
1)。这个节点是我正在使用的代码
try {
var quizArr = [];
var quizObj = {
'questionId': req.params.questionId,
'score': req.params.score,
'time': new Date().toISOString()
};
quizArr.push(quizObj);
var userObj = {
'userId':req.params.userId,
'quiz':quizArr
};
var childinfoSave = new quizChild(userObj);
childinfoSave.save(function (err, data) {
if (err) {
return next(err);
}else{
//res.send("Child questionId score and date saved successfully" + data);
res.send(data);
console.log("Child questionId score and date saved successfully");
}
});
} catch (err) {
console.log('Error While Saving the child questionId score and Date ' + err);
return next(err);
}
2)。我正在使用这个架构
2). Schema
quiz: {type: Array,
questionId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Question',
index: true
},
score: { type: Number },
time: { type: String }
}
3)。这是MONGODB
中存储的结果 {
"_id" : ObjectId("57c1549926bbb3891a90db1a"),
"quiz" : [
{
"questionId" : ObjectId("57c14a36b78cd543fc59b827"),
"score" : 1,
"time" : "2016-08-27T08:51:37.503Z",
"_id" : ObjectId("57c1549926bbb3891a90db1b")
}
],
"__v" : 0
}
{
"_id" : ObjectId("57c154a626bbb3891a90db1c"),
"quiz" : [
{
"questionId" : ObjectId("57c14a36b78cd543fc59b828"),
"score" : 1,
"time" : "2016-08-27T08:51:50.898Z",
"_id" : ObjectId("57c154a626bbb3891a90db1d")
}
],
"__v" : 0
}
4)我想在一个具有多个Object的测验的单个数组中创建单个文档,而不是上面两个文档。
{
"_id" : ObjectId("57c1549926bbb3891a90db1a"),
"quiz" : [
{
"questionId" : ObjectId("57c14a36b78cd543fc59b827"),
"score" : 1,
"time" : "2016-08-27T08:51:37.503Z",
"_id" : ObjectId("57c1549926bbb3891a90db1b")
},
{
"questionId" : ObjectId("57c14a36b78cd543fc59b828"),
"score" : 1,
"time" : "2016-08-27T08:51:50.898Z",
"_id" : ObjectId("57c154a626bbb3891a90db1d")
}
],
"__v" : 0
答案 0 :(得分:0)
插入第一条记录后,您需要在下次收到请求时更新它。
db.collName.update({ "_id" : ObjectId("57c1549926bbb3891a90db1a")},
{$push:{quiz : quizObj}});
或者
db.collName.update({ "userId" : ObjectId(req.params.userId.toString())},
{$push:{quiz : quizObj}});
有关如何更新的详情,请参阅update-mongodb。