gpt4 book ai didi

mongodb - Mongoose $push 添加到文档

转载 作者:可可西里 更新时间:2023-11-01 10:47:29 26 4
gpt4 key购买 nike

我正在尝试向现有数组添加一个元素,但它产生了一个错误:

The field 'data' must be an array but is of type object in document 

方案:

const testScheme = new Schema({
user: {
type: String,
required: true
},
data: [{
platform: {
type: String,
required: true
},
item_name: {
type: String,
required: true
},
price: {
type: Number,
default: 0
},
updatedAt: Date
}]
}, {
versionKey: false,
timestamps: true
});

mongodb 中的文档:

"data": [{
"price": 50,
"_id": "5a84268d6c78a60c10479437",
"platform": "pl1",
"item_name": "test"
}],
"_id": "5a841bccb44cb8cd5b974d71",
"user": "Ivan",
"updatedAt": "2018-02-14T12:07:41.793Z",
"createdAt": "2018-02-14T11:21:48.104Z"

查询:

var item = {
"platform": "pl700",
"item_name": "someText",
"price": 700,
"updatedAt": new Date()
};
Data.findOneAndUpdate({
'user': 'Ivan'
}, {
$push: {
'data': item
}
}, {
safe: true,
upsert: true
},
function(err, data) {
if (err) return res.status(500).send({
'error': err
});
res.status(200).send({
'data': data
});
}
);

我尝试使用 $set parametr 进行查询并且它有效,但是 $push、$addToSet 对我不起作用。我也尝试用谷歌搜索这个问题,但无法解决。

最佳答案

不清楚你打算做什么。

要将项目插入数组,您可以使用 $addToSet/$push。要更新数组,您可以使用 $set

使用 $set,您可以更新整个文档,也可以更新特定字段。

更新整个文档

Data.findOneAndUpdate({
'user': 'Ivan',
'data._id':item._id
}, {
$set: {
'data.$': item
}
}...
)

更新特定字段

Data.findOneAndUpdate({
'user': 'Ivan',
'data._id':item._id
}, {
$set: {
'data.$.price': item.price
}
}...
)

关于mongodb - Mongoose $push 添加到文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com