mongodb中根據陣列子元素進行匹配,有兩種方式。
使用 「[陣列名].[子元素欄位名]」 的方式進行匹配。
使用 「[陣列名]」 $elemmatch 的方式。
不同點在於所匹配的主體不同。
「[陣列名].[子元素欄位名]」 的方式匹配的主體為 「[陣列名]」, 適用於單個條件,如果是多個條件, 則變成陣列子元素之間的「或」運算。
請看示例:
假設某個集合內有2條資料:
// document1
,
]}
找出陣列中, 具有 qid=1並且reorderflag=0的記錄// document2
,
]}
查詢陣列內同一條記錄同時滿足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...