首先这里是我创建文章的数据库结构。 https://imgur.com/cnrbW2l
在这里,我想通过添加名为thumbup的新字段来用_id 5caa581bdc6f245dd4cd8ed9更新sub_comment。我需要如何执行更新查询?
使用mongoose.js,这是我的模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ArticleSchema = new Schema({
category: String,
title: String,
content: String,
author: String,
picture: String,
is_helpful: { type: Number, min: 0, max: 100000 },
total_helpful: { type: Number, min: 0, max: 100000 },
comment: [
{
full_name: String,
email: String,
message: String,
picture: String,
thumbup: { type: Number, min: 0, max: 2000 },
thumbdown: { type: Number, min: 0, max: 2000 },
sub_comment: [
{
sc_full_name: String,
sc_email: String,
sc_message: String,
sc_picture: String,
sc_thumbup: { type: Number, min: 0, max: 2000 },
sc_thumbdown: { type: Number, min: 0, max: 2000 }
}
]
}
],
tags: [String],
time: Date
});
module.exports = Article = mongoose.model('articles', ArticleSchema);
这是更新注释的工作代码示例,例如添加新的字段thumbup和分配值。这段代码可以正常工作。
Article.update(
{ 'comment._id': req.body.comment_id },
{ $inc: { 'comment.$.thumbup': 1 } }
)
.then(success => {
message = {
meta: { status_code: 200, message: 'success' }
// data: success
};
res.status(200).json(message);
})
.catch(err => {
console.log(err);
});
这是我的代码,用于在sub_comment上添加字段thumbup / increase thumbup值,但是它不起作用。
Article.update(
{
'sub_comment._id': req.body.sub_comment_id
},
{
$inc: { 'sub_comment.$.thumbup': 1 }
}
)
.then(success => {
message = {
meta: { status_code: 200, message: 'success' },
data: success
};
res.status(200).json(message);
})
.catch(err => {
console.log(err);
});
我希望在sub_comment上添加新的字段thumbup。我正在使用运算符$ inc自动增加价值。上面的代码我什么都没得到,这是上面的代码执行的结果:
"ok": 0,
"n": 0,
"nModified": 0