中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB中數組如何使用

發布時間:2021-08-12 15:35:45 來源:億速云 閱讀:163 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關MongoDB中數組如何使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

01 數組的使用場景

    0101  1:N的包含結構使用數組

    0102  單文檔大小限制

02 多種數組操作方式

    0201  使用$push 追加數組元素

    0202 使用$unwind聚合分離數組元素

 數組是MongoDB中最能體現MongoDB嵌套設計思想的數據結構。

從一張MongoDb社區活動的PPT談起,什么場景下適合使用數組?

MongoDB中數組如何使用

1:N的包含結構使用數組

比如組織結構中的組與組員1:N的包含結構,就可以使用數組

"add": ISODate("2017-08-23T17:15:56.173+08:00"),

"agid": 10,組編號

"order": 150,

"user": [

  {

    "name": "",

    "uid": 1240,

    "email": "",

    "status": 1,

    "edit": ISODate("2017-08-16T00:00:18.685+08:00"),

    "scope": 1,

    "desc": "服務人員"

  },

  {

    "name": "",

    "uid": 1442,

    "email": "",

    "status": 1,

    "edit": ISODate("2017-08-16T00:00:18.685+08:00"),

    "scope": 1,

    "desc": "服務人員"

  }

]


以上的設計,每一組在MongoDB中就是一行,隨著組員增加,每行大小也會隨之增加,所以PPT里說明中有一條 數組元素的上限不大。只要不超過16M即可。相反 如果我們在開發中選用這種集合結構,那么對于整個數據集的大小和單個collection的大小應該有個預先的判斷,或者說總量是可控的,不會太龐大。

可控的文章評論列表,或者是工單更新回復日志都可以使用數組來保存。

多種數組操作方式

在MongoDb中操作數組不是像關系型數據庫那么工整方便,但是不用擔心,是有方法可操作的。

想象這樣的使用場景,文章評論列表,或者是工單更新回復日志使用數組來保存,如何往數組中追加元素?

The following example appends 89 to the scores array:

db.students.update({_id:1},{$push:{scores:89}})

Use $push with the$each modifier to append  multiple values to the array field.

The following example appends each element of[90,92,85]tothescoresarray for the document where thenamefieldequalsjoe:

db.students.update({name:"joe"},{$push:{scores:{$each:[90,92,85]}}})

在MongoDb的使用過程中,更多的靈活操作,可以借助于操作符命令,查看官方文檔更多的使用案例

元素數組完成后,如何查詢?

假設以下是我們的文檔結構

{

  "_id": ObjectId("591be87de28db61328007ca4"),

  "name": "醫院綜合體",

  "status": 1,

  "create_time": ISODate("2017-05-17T14:06:53.000+08:00"),

  "update_time": ISODate("2017-05-17T14:23:11.000+08:00"),

  "strategies": [

    {

      "strategyid": 1495101761,

      "topic": "cloud"

    },

    {

      "strategyid": 1456101761,

      "topic": "db"

    }

  ]

}

如果我們想通過topic條件查詢出如下特定的數組元素

{

"strategyid" :1495101761,

"topic" : "cloud" 
},

我們需要管道聚合 和$unwind操作符.通過$unwind操作符將文檔的數組節點拆分為單個文檔,并且結合$match查詢特定的數組元素。

$mongo=Mongodb::getInstance();

$ops=[

[

'$unwind'=>'$strategies'],

[

'$match'=>[

'strategies.topic'=>$topic

],

[

'$group'=>[

'_id'=>

      ['strategies'=>'$strategies.topic'],

      'strategyid'=>['$push'=>'$strategies.strategyid'],

  ]  ],

];

$collection=$mongo->db->collection;

$data=$collection->aggregate($ops);

return$data['result'];

上述就是小編為大家分享的MongoDB中數組如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄浦区| 辽宁省| 通江县| 根河市| 南城县| 开鲁县| 嫩江县| 牟定县| 长葛市| 邮箱| 邵东县| 无锡市| 衡东县| 大宁县| 绍兴市| 太康县| 措勤县| 应用必备| 阿拉善右旗| 遂宁市| 凤冈县| 高陵县| 东乡族自治县| 永安市| 垦利县| 盘锦市| 锡林郭勒盟| 南平市| 泰州市| 马边| 嘉黎县| 台山市| 永和县| 镇雄县| 星子县| 岢岚县| 邛崃市| 金溪县| 清涧县| 亳州市| 晴隆县|