mongodb基礎知識 內嵌陣列相關

2021-09-02 17:03:59 字數 2860 閱讀 9981

前面看到mongodb文件的字段的值可以巢狀乙個文件,當然欄位的值也可以巢狀乙個陣列。不過巢狀陣列就比巢狀文件稍微複雜一些,因為陣列既可以是基本資料型別的陣列,也可以是文件型別的陣列。為了邏輯的順暢,先從巢狀基本資料型別的陣列開始,然後過度到巢狀文件的陣列。

基本資料的陣列:

1. 精確匹配  陣列中值完全一樣,值的順序也一致

// 樣例資料

// 精確查詢

db.students.find( )

// 匹配的只有乙個

// 下面兩個不會匹配 順序不一樣 個數不一樣

2. 匹配陣列單個元素  也就是資料中有乙個元素等於查詢的這個元素 就返回。

// 樣例資料

// 匹配陣列乙個元素

db.students.find( )

// 返回的文件是

// 5

// 5

// 5

// 5

3. 匹配陣列多個元素  也就是所有的查詢條件都可以在陣列中找到匹配的元素,可以是單個元素滿足所有條件,也可以是多個元素-每個元素只滿足乙個條件。

// 樣例資料

// 每個條件都有元素可以匹配

db.students.find( } )

// 返回的文件是

// 3 -1

// 1 1

// 1 1

// 1 1

4. 陣列單個元素匹配多個條件 注意和上面的區別  這裡指的是陣列中存在至少乙個元素滿足所有的條件。

// 樣例資料

// 至少乙個元素滿足所有條件

db.students.find( } } )

// 返回的文件是

// 1

// 1

// 1

5. 建立索引

// 樣例資料

// 對ratings欄位建立索引

db.survey.createindex( )

巢狀文件的陣列:

// 樣例資料

,finished: [ 17, 3 ],

badges: [ "blue", "black" ],

points: [,]

},,

finished: [ 11, 25 ],

badges: [ "green" ],

points: [,]

},,

finished: [ 6 ],

badges: [ "blue", "red" ],

points: [,]

},,

finished: [ 5, 11 ],

badges: [ "red", "black" ],

points: [,]

},,

finished: [ 14, 6 ],

badges: [ "orange" ],

points: []},

,finished: [ 18, 12 ],

badges: [ "black", "blue" ],

points: [,]

}

1. 組合元素滿足查詢條件 對於每乙個條件都可以找到巢狀文件匹配

//

db.users.find( } )//,

"finished" : [ 6 ],

"badges" : [ "blue", "red" ],

"points" : [ , ]// 55 81

}

2. 單個文件滿足多個查詢條件 有兩種情況 一種是乙個字段多個限制  一種是多個字段限制

// 第一種情況

db.users.find( } } } )

// 返回

, "finished" : [

11.0,

25.0

],"badges" : [

"green"

],"points" : [

, ]},

"finished" : [

18.0,

12.0

],"badges" : [

"black",

"blue"

],"points" : [ , ]

}

// 第二種情況

db.users.find( , bonus: 20 } } } )

// 返回

, "finished" : [

6.0],

"badges" : [

"blue",

"red"

],"points" : [ , ]

}

3. 陣列要包含某幾類文件 也就有多個$elemmatch

// 意思就是說既要有文件第乙個 也要有文件滿足第二個

db.users.find( , bonus: 20 } } },

, bonus: 8 } } }

]} )

// 返回

, "finished" : [

6.0],

"badges" : [

"blue",

"red"

],"points" : [ , ]

}

// 也可以這麼寫 和上面的寫法等價

db.users.find( , bonus: 20 } },

, bonus: 8 } }

]}} )

// 返回

, "finished" : [

6.0],

"badges" : [

"blue",

"red"

],"points" : [ , ]

}

陣列 基礎知識

陣列是相同型別的變數的有序集合 int a 5 陣列示意圖 陣列包含5個int型別的資料 陣列在一片連續的記憶體空間中儲存元素。陣列元素的個數可以顯式或隱式指定。對於a,a 2 a 3 a 4 都為0 對於b,元素個數為2。在定義陣列並初始化的時候,給陣列的前幾位初始化設定相應的值之後,如果沒有給後...

陣列基礎知識

陣列 1 定義 儲存相同型別的一組資料 格式 陣列型別 陣列名 new 陣列型別 陣列長度 基本要素 識別符號 陣列元素 元素下標 從0開始 元素型別 初始化陣列 方式 1 int nums new int 3 方式 2 int nums 方式 3 int nums new int nums 0 1...

陣列基礎知識

陣列的宣告 陣列是相同型別的資料按順序組成的一種復合資料型別。通過陣列名加陣列下標,來使用陣列中的資料。下標從 0 開始排序。宣告一維陣列 陣列元素型別 陣列名 宣告二維陣列 陣列元素型別 陣列名 陣列的例項化 陣列的初始化 靜態初始化 格式一 資料型別 陣列名 格式二 資料型別 陣列名 new i...