MongoDB Query and Projection Operators

最近在學習MongoDB University的課程中關於CRUD部分的內容,課程結束後查閱了MongoDB的手冊,將其中關於Query和Projection和部分總結一下。正則表達式

Query Selector數據庫

MongoDB中的查詢選擇器主要包括Comparison、Logical、Element、Evaluation、Geospatial、Array、Bitwise和Comments幾類。數組

1)Comparison函數

主要包括$eq (=)、$gt (>)、$gte (>=)、$lt (<)、$lte (<=)、$ne (!=),以及$in (匹配對應的值是否包含在一個指定數組中)、$nin (指定的元素不包含在指定的數組中)。各類選擇器能夠組合進行查詢,以下:學習

db.movieDetails.find({ runtime: { $gt: 90 } }).count()

db.movieDetails.find({ runtime: { $gt: 90, $lt: 120 } }).count()

db.movieDetails.find({ "tomato.meter": { $gte: 95 }, runtime: { $gt: 180 } })

db.movieDetails.find({ rated: { $ne: "UNRATED" } }).count()

db.movieDetails.find({ rated: { $in: ["G", "PG"] } }).pretty()

2)Logicallua

主要包括$or (||)、$and (&&)、$not (!)、$nor(匹配返回的是不符合全部查詢條件的文檔),以下:spa

db.movieDetails.find({ $or : [ { "tomato.meter": { $gt: 99 } },
                               { "metacritic": { $gt: 95 } } ] })


db.movieDetails.find({ $and : [ { "metacritic": { $ne: 100 } },
                                { "metacritic" { $exists: true } } ] })

3)Elementcode

主要包括$exists (是否存在)、$type (BSON類型的字符串別名) 兩種,以下:blog

db.moviesDetails.find({ "tomato.meter": { $exists: true } })
db.moviesScratch.find({ _id: { $type: "string" } })

4)Evaluationip

主要包括$mod、$regex、$text和$where幾類。

 $mod: 取模運算,須要提供一個包含除數和取模後的結果兩個元素的數組,注意這裏必須提供兩個元素,否則會報錯:

db.inventory.find({ qty: { $mod: [4, 0] } })

如上,須要從數據庫取出qty字段的值可以被4整除的文檔。

$regex: 提供一個正則表達式來進行匹配,查找符合條件的文檔:

db.movieDetails.find({ "awards.text": { $regex: /^Won.*/ } }).pretty()

$text: 對指定的文本進行搜索,具體格式以下:

{
    $text: {
        $search: < string > , //  須要搜索的字符串
        $language: < string > , //  語言,可選
        $caseSensitive: < boolean > , //  是否區分大小寫,可選,默認爲false
        $diacriticSensitive: < boolean > //  是否區分變音符大小寫,可選,默認爲false
    }
}

$where:提供一個JavaScript表達式或函數來進行匹配搜索

5)Geospatial

這部分暫時沒用到,稍後補充。主要是關於地理信息相關的查詢。

6)Array

$all:匹配的元素必須包含數組的所有內容

$elemMatch:

相關文章
相關標籤/搜索