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 });
    })
    
  • 測試
    在這裏插入圖片描述

    之後我們看看數據庫中的數據:

    在這裏插入圖片描述

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