node.js - 在猫鼬处查找并将对象更新为数组
问题描述
假设我在 Mongodb 有这个 json:
{
"_id": {
"$oid": "5b37f4b5fe0cd65b1739641b"
},
"email": "sample@me.com",
"username": "Sample",
"password": "$2b$10$Zpynx8wTgqQftUO3m1tLUO8lNHtBtxl0i7yk84rRkVzcTmB9zO7Mu",
"__v": 0,
"tds": [
{
"_id": {
"$oid": "5b3bebb247737b77b2ecc398"
},
"category": "Projects",
"todos": {
"_id": {
"$oid": "5b3bebb247737b77b2ecc397"
},
"todo": "something to do"
}
},
{
"_id": {
"$oid": "5b3bec41dc270277bae759d6"
},
"category": "Main",
"todos": {
"_id": {
"$oid": "5b3bec41dc270277bae759d5"
},
"todo": "Other to do"
}
}
]
}
我怎样才能更新待办事项?例如:
{
"_id": {
"$oid": "5b3bebb247737b77b2ecc397"
},
"todo": "something to do"
}
进入
{
"_id": {
"$oid": "5b3bebb247737b77b2ecc397"
},
"todo": "Lets do something"
}
我在 nodeJS 上尝试使用 select、$push、$set,但任何人都能够做到这一点。也许有一个我不知道的过滤器。当我沉迷于此 2 天时,我决定放弃。
架构:
var UserSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true,
trim: true
},
username: {
type: String,
unique: true,
required: true,
trim: true
},
password: {
type: String,
required: true,
},
passwordConf: {
type: String,
required: true,
},
tds:{}
})
;
编辑:
具有有效 ID 的新有效 json。
解决方案
您可以使用 mongoose 中的 updateOne() 和 updateMany() 函数更新您的 json 数据,如下所示:
const Users=mongoose.model('user',UserSchema);
Users.updateOne({'tds.todos._id':'5b3bebb247737b77b2ecc397','tds.todos.todo':'something
to do'},{'tds.todos.todo':'Lets do something'}).then((users)=>{
console.log(users);
});
推荐阅读
- hyperlink - firefox 不能点链接,在其他浏览器可以
- css - Tabindex,仅使用选项卡按钮勾勒轮廓
- angular - 查找依赖路径
- c - 无法使用具有 n 大小块的 Windows 文件映射顺序处理 > 250kb 的文件
- javascript - 将日期与 .valueOf 进行比较
- r - 我需要一个循环来根据 R 中的时间戳差异删除行
- hadoop - 为 Hive 客户端添加带有辅助 jar 的路径
- ssis - SSIS 中的父包失败并显示以下内容
- javascript - 使用 RxJS Observables 的单次成功回调
- magento - Magetno 如何在联系表格中添加复选框?