updateOne $ set not working - Mongoose
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了updateOne $ set not working - Mongoose相关的知识,希望对你有一定的参考价值。
我正在尝试更新数组中的子文档books
但没有成功。新数据不会被保存。
表达:
router.put("/:id/:bookid", (req, res) => {
Library.updateOne(
{ _id: req.params.id, "books._id": req.params.bookid },
{ $set: { "books.$.title": "New value" } }
);
});
LibraryScema:
const LibarySchema = new Library({
Name: {
type: String,
required: false
},
books: [BookSchema]
});
bookScema:
const BookSchema = new Schema({
title: {
type: String,
required: false
},
Chapters: [
{
chapterTitle: {
type: String,
required: false
}
}
]
});
我究竟做错了什么?
编辑:
图书馆表:
{
"_id": {
"$oid": "12345"
},
"Name": "A random libary",
"Books": [
{
"_id": {
"$oid": "1"
}
"title": "TitleExample",
"Chapters": [
{
chapterTitle: "first chapter etc"
}]
},
{
"_id": {
"$oid": "2"
}
"title": "Another book" ,
"Chapters": [
{
chapterTitle: "first chapter etc"
}]
}
]
}
答案
I updated my answer.
router.put("/:id/:bookid", (req, res) => {
Library.findOne({ _id: req.params.id, "books._id": req.params.bookid }).exec(function(err,result){
if(err)throw err;
if(result){
result.books.title="new value";
result.save()
console.log("new value")
}
else{console.log("not found")}
})
});
你可以尝试这个,可能会帮助你。
以上是关于updateOne $ set not working - Mongoose的主要内容,如果未能解决你的问题,请参考以下文章
在官方mongo-go-driver的UpdateOne中$ set的bson语法是什么
验证无法使用 ng-model-options = updateOn: 'submit'
MongoDB中updateOne超过findOneAndUpdate的用例[重复]