首页 > 解决方案 > 在猫鼬处查找并将对象更新为数组

问题描述

假设我在 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。

标签: node.jsmongodbmongoose

解决方案


您可以使用 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);
});

推荐阅读