mongodb中对数组的操作

如何向对象中的数组添加数据或者删除数据呢❓增加数据push❓删除数据delete❓一起来看看吧👇👇👇

增加

如果想往数组中添加对象时最常见的是:循环——>push,那么在mongodb中如何操作呢❓先上数据吧:

{
    "_id" : ObjectId("5e72cff594c0f607d9060d08"),
    "name" : "Anna",
    "age" : 20,
    "addressInfo" : [ 
        {
            "_id" : ObjectId("5e72cff594c0f607d9060d09"),
            "name" : "美国",
            "tel" : "13809876543"
        }
    ],
    "__v" : 0
}

从上面的数据我们可以看到对象中有_id,name,age,addressInfo等字段,其中addressInfo是数组,那么现在向该数组中再加数据该如何操作呢❓👇👇👇我们一起来看看吧——$addToSet$push

  • $push
    返回组内所有值的数组,不去除重复的值

    • 实现

      router.post('/addTestArr', async (req, res) => {
        let { _id, address } = { ...req.body };
        let data = await Test.findOneAndUpdate({
          _id: _id
        }, {
          $push: {
            'addressInfo': address
          }
        },{new:true});
        res.json({ data });
      })
      
    • 测试
      在这里插入图片描述
      继续点击postman里面的send按钮,不修改任何参数的值,看下面的效果:

      在这里插入图片描述

  • $addToSet
    为组里唯一的值创建一个数组,去除重复的值

    • 实现

      router.post('/addTestArr', async (req, res) => {
        let { _id, address } = { ...req.body };
        let data = await Test.update({
          _id: _id
        }, {
          '$addToSet': {     //$push
            'addressInfo': address
          }
        },{new:true});
        res.json({ data });
      
    • 测试
      在这里插入图片描述
      继续点击postman里面的send按钮,不修改任何参数的值,看下面的效果:

      在这里插入图片描述

      从图中我们可以清晰地看到相同的值在数组中已经存在了不再重复加入,也就是前面说的去重。

删除

同样是上面的数据,假如现在要删除addressInfo数组中的某条数据,首先想到的是不是先循环数组找到要删除的那条数据后再删除呢❓嗯,没错,大多时候都会这么做的,但是在mongoose中有个知识点可以根据条件找到直接删除,而不需要循环删除,那到底是什么呢❓—— $pull

  • 语法

    { $pull: { <field1>: <value|condition>, <field2>: <value|condition>, ... } }
    
  • 例子

    router.delete('/deleteTest', async (req, res) => {
      let {_id,addressId} = {...req.body};
      let data = await Test.update({ _id: _id }, { $pull: { 'addressInfo': { _id: addressId } } })
      res.json({ data });
    })
    
  • 测试
    在这里插入图片描述

    之后我们看看数据库中的数据:

    在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章