A questions table, which stores all the questions. Each question has a key of answers, which is an array object. Each answer has its own _id and an up attribute. Now I want to pass this _id to update the up attribute.
How do seniors do it? I tried a lot but still can’t update it correctly, thank you qaq
怪我咯2017-05-02 09:28:29
db.questions.update({
"answers._id": ObjectId("58f575ca09c601c45f6c281a")
}, {
$set: {
"answers.$.up": 1
}
});
Note the $
operator, we call it Positional Operator, please see the link for more information.
滿天的星座2017-05-02 09:28:29
I think you shouldn’t nest the data table so deeply. I think it’s more reasonable to build a relational table.
过去多啦不再A梦2017-05-02 09:28:29
Okay, assuming you know the index of the answer you want to modify in the answers array, you can use question.answers.index.up to update it. If you don’t know the index now, you can use $ to place it, and use {answers._id for Filter. :123456} update using {answers.$.up:321}