Go 在 MongoDB 中對陣列元素進行查詢

2021-08-20 14:39:23 字數 1149 閱讀 2101

mongodb中根據陣列子元素進行匹配,有兩種方式。

使用 「[陣列名].[子元素欄位名]」 的方式進行匹配。

使用 「[陣列名]」 $elemmatch 的方式。

不同點在於所匹配的主體不同。

「[陣列名].[子元素欄位名]」 的方式匹配的主體為 「[陣列名]」, 適用於單個條件,如果是多個條件, 則變成陣列子元素之間的「或」運算。

請看示例:

假設某個集合內有2條資料:

// document1

,

]}

// document2

,

]}

找出陣列中, 具有 qid=1並且reorderflag=0的記錄

查詢陣列內同一條記錄同時滿足2個條件的語句:

} }
查詢結果是:

, 

]}

可以看到, 其執行結果是, 對陣列內的每乙個子元素, 執行 $elemmatch 匹配, 可以進行多個條件的匹配。

找出陣列中, qid=1 或者 reorderflag=0的記錄

陣列整體能滿足以下2個條件:

執行的主體是qlist, 要求: 有某些子元素滿足qid=1, 也要有某些子元素滿足reorderflag=0

查詢結果是:

, 

]},

]}

可以看到, 其執行結果是, 對陣列進行匹配, 其中需要有子元素 滿足"qlist.qid": 1, 還需要有子元素 滿足"qlist.qid": 1, 適合進行單個條件的匹配。

如果是單個條件匹配, 則以下方式結果是一樣的。

或者

} }
查詢的結果都是2條記錄。

查詢陣列長度大於1的記錄:

, $where: 'this.qlist.length>1' }
2條記錄都匹配。

php陣列指定元素去重,php陣列對陣列元素去重

最簡單的辦法利用php自帶的函式用array flip實現去重效果,另乙個方法是使用php的array flip函式來間接的實現去重效果 array flip是反轉陣列鍵和值的函式,他有個特性就是如果陣列中有二個值是一樣的,那麼反轉後會保留最後乙個鍵和 值.利用這個特性我們用他來間接的實現陣列的去重...

Go 在 MongoDB 中常用查詢與修改

以下所有例子中結構定義如下 type user struct通過func c collection find query inte ce query來進行查詢,返回的query struct可以有附加各種條件來進行過濾。通過query.all 可以獲得所有結果,通過query.one 可以獲得乙個結...

PHP中對陣列進行排序

測試一 array array array id 1,name a array id 5,name b array id 3,name c 按列id的值進行排序 foreach array as key row 把 data 作為最後乙個引數,以通用鍵排序 print r array array m...