javascript - 如何使用 mongoose 更新 mongodb 中的值?
问题描述
我在 node js 中做了一个简单的 MongoDB 演示。
首先我保存我document
这样的工作正常。
{
"_id": "5d984cf947cd7301dab539be",
"tmObj": {
"a1": "N",
"a2": "N",
"a3": "N"
},
"__v": 0
}
现在我想更新一个attribute from my collection
示例数据是
const data = {
a1: "Y"
};
这是我的代码
https://codesandbox.io/s/objective-minsky-bqeil
app.get("/saveData", async (req, res, next) => {
try {
const data = {
tmObj: {
a1: "N",
a2: "N",
a3: "N"
}
};
console.log("before save");
let blog = new BlogPostModel(data);
let saveBlog = await blog.save(data); //when fail its goes to catch
return res.send(saveBlog);
} catch (error) {
console.log(error);
return res.status(400).send(error);
}
});
app.get("/update", async (req, res) => {
try {
const data = {
a1: "Y"
};
let filterBlog = await BlogPostModel.find({});
//when fail its goes to catch
console.log(filterBlog); //when success it print.
res.send(filterBlog);
} catch (error) {
console.log(error);
}
});
任何更新?
解决方案
这是答案代码和框
正如您在评论中提到的那样,集合中只有一个文档,然后您可以使用空查询。要更新并取回文档,您可以使用findOneAndUpdate
:
app.get("/update", async (req, res) => {
try {
const data = {
a1: "Y"
};
let filterBlog = await BlogPostModel.findOneAndUpdate(
{},
{ "tmObj.a1": data.a1 }
);
//when fail its goes to catch
console.log(filterBlog); //when success it print.
res.send(filterBlog);
} catch (error) {
console.log(error);
}
});
为避免弃用警告,您应该{ useFindAndModify: false }
在mongoose.connect
.
推荐阅读
- javascript - 遍历子文件并获取Javascript中内容总和的结果
- python - 如何在 python 3.x httplib2 中设置代理?
- excel - 使用 Java API 将 excel 文件转换为 PDF
- node.js - 在 React 和 Node 中使用 Route Handler
- android - 实施 In-app bp 后,如何在应用中解锁付费风味
- c++ - 如何在 QT Creator 中手动运行 CMake 和运行
- azure-data-factory - Azure 数据工厂:如何更新管道内的管道参数(标志)
- sql - 当实际值为空时,Sql 不返回列元数据
- twitter-bootstrap - 我如何在 JSP 文件中链接到我的 bootstrap.min.css
- c - 如何创建指向 3 维数组的 2 维的指针?