標籤:
MongoDB中使用find來進行查詢,查詢就是返回一個集合中文檔的子集,子集合的範圍從0個文檔到整個集合。find的第一個參數決定了要返回哪些文檔。空的查詢文檔{}會匹配集合的全部內容,要是不指定查詢文檔,預設就是{}。
MongoDB查詢使用上還是有些限制的,資料庫所關係的查詢文檔的值必須是常量,也就是不能引用文檔中其它鍵的值。
查詢條件 "$lt"、"$lte"、"$gt"、"$gte"、"$ne"就是全部的比較操作符,分別對應<、<=、>和>=與"不相等";
"$in" 用來查詢索引值在某個範圍內值 "$nin" 用來查詢索引值不在某個範圍內的值
"$or" 接受一個包含所有可能條件的數組作為參數
"$mod" 模數運算子,會將查詢的值除以第一個給定值,若餘數等於第二個給定值則返回該結果
"$not" 查詢與特定模式不符的文檔
一個鍵可以有多個條件,但一個鍵不能對應多個更新修改器
null不僅僅匹配自身而且匹配“不存在的”,這種匹配還會返回缺少這個鍵的所有文檔
如果僅僅想要匹配索引值為null的文檔,既要檢查該鍵的值是否為null,還要通過“$exists”條件判斷索引值是否存在
MongoDB使用Perl相容的Regex(PCRE)庫來匹配Regex,PCRE支援的Regex文法都能被MongoDB接受,在使用Regex前,可以現在JavaScrip shell中檢查一下文法
如果需要通過多個元素來匹配數組,就要使用"$all"
“$size”可以用其查詢指定長度的數組
“$slice”返回數組的一個子集合,可以接受位移值和要返回的元素的數量,除非特別聲明,否則返迴文檔中的所有鍵
查詢內嵌文檔有兩種方法:查詢這個文檔,或只針對其鍵/值對進行查詢
查詢整個文檔要求結構與原資料完全符合(包括順序一樣)
"$elemMatch"將限定條件進行分組,僅當對一個內嵌文檔的多個鍵操作時才會用到,結果返回滿足條件的所有文檔
"$where"可以執行任意JavaScript作為查詢的一部分,是的查詢幾乎能做任何事情,但是不是必要時要避免使用"$where"查詢,因為它在速度上要比常規查詢慢很多,每個文檔都要從BSON轉為JavaScript對象,然後通過"$where"的運算式來運行,同樣還不能使用索引
MongoDB學習筆記02