我正在使用此查询:
Model.update(
{_id: req.params.questions_id, "doc.questionSets.$._id": req.params.set_id},
{$pushAll: {"questions": req.body}},
{upsert:true},
function(err, questions){
console.log("err", err);
console.log("err", questions);
}
)
路线呼叫:
localhost:3131/api/v0.1/charting/questions/56cff03e9ff240192da2fa34/set/56cff04e9ff240192da2fa3a/add-new-question
其中:charting/questions/:questions_id/set/:set_id/add-new-question
文件数据:
/* 1 */
{
"_id" : ObjectId("56cff03e9ff240192da2fa34"),
"questionSets" : [
{
"name" : "Physical exam questions",
"_id" : ObjectId("56cff03e9ff240192da2fa35"),
"questions" : [
{
"question" : "What is love?",
"answer" : "",
"_id" : ObjectId("56cff03e9ff240192da2fa39")
}
]
},
{
"name" : "Brain questions",
"_id" : ObjectId("56cff04e9ff240192da2fa3a"),
"questions" : [
{
"question" : "What is love?",
"answer" : "",
"_id" : ObjectId("56cff04e9ff240192da2fa3e")
}
]
}
],
"updatedAt" : ISODate("2016-02-26T06:26:39.330Z")
}
我想将此JSON对象推送到questionSets[0].questions
:
[
{
"question" : "Added 1?"
}
]
但查询返回 {ok:0,n:0,nModified:0} ,文档尚未更新。我在这做错了什么?感谢。
答案 0 :(得分:0)
使用数据
> db.questions.find().forEach(printjson)
{
"_id" : ObjectId("56d0143bd43e3500f6768488"),
"questionSets" : [
{
"name" : "q1",
"_id" : "1",
"question" : [
{
"question" : "here",
"answer" : "dd",
"_id" : "1"
}
]
},
{
"name" : "q2",
"_id" : "2",
"question" : [
{
"question" : "you",
"answer" : "cc",
"_id" : "2"
}
]
}
]
}
运行命令
> db.questions.update({'questionSets._id': '1'},
{$pushAll: {
'questionSets.$.question': [
{question: 'you',
answer: 'are',
_id: '3'}]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })