我正在使用下面的mongoose版本4.1.8我的mongo db架构看起来像这样
(function() {
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const DataCodeSchema = new Schema({
label: {
type: String,
required: true,
maxLength: 60
},
description: {
type: String,
required: false,
maxLength: 255
},
enabled: {
type: Boolean,
required: true,
default: true
},
items:{
type:Array,
required:false
}
});
module.exports = mongoose.model('DataCode', DiscountCodeSchema);
})();
现在补丁电话给我这样的数据
{'items':"dataNth"}
我现有的数据是这样的
{ 'label':'data info',
'items':['data1','data2']
}
补丁调用后,它变得像他的
{ 'label':'data info',
'items':['dataNth']
}
但我想要这样
{ 'label':'data info',
'items':['data1','data2','dataNth']
}
我已经像这样使用了mangoose findByIdAndUpdate
const options = {
new: true
};
if (req.body.code) {
req.body.code = req.body.code.toLowerCase();
}
DataCode.findByIdAndUpdate(req.params.dataId, req.body, options)
.then(dataCode => {
if (!dataCode) {
return errorHandler.notFound(req, res, `No data found for id: ${req.params.dataId}`);
}
res.status(201).json(dataCode);
})
.then(null, next);
请告诉我如何操作
答案 0 :(得分:0)
$push
用于更新数组。
DataCode.findByIdAndUpdate(
{_id: req.params.dataId},
{ $push: {items: 'dataNth'},
options
)
你也可以使用$ set来编辑其他文件
DataCode.findByIdAndUpdate(
{_id: req.params.dataId},
{$push: {items: 'dataNth'},
{$set: req.body}
options
)