MongoDB之資料查詢(where條件過濾)

stonebox1122發表於2017-08-29
實際上習慣於傳統關係型資料庫開發的我們對於資料的篩選,可能首先想到的where子句,所以在MongoDB裡面也提供有“$where”。

範例:使用where進行資料查詢
> db.emp.find({"$where":"this.age>40"}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"

或者:
> db.emp.find("this.age>40").pretty();
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"
}

對於“$where”是可以簡化的,但是這類的操作是屬於進行每一行的資訊判斷,實際上對於資料量較大的情況並不方便使用。實際上以上的程式碼嚴格來講是屬於編寫一個操作的函式。

> db.emp.find(function(){return this.age>40;}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"
}

> db.emp.find({"$where":function(){return this.age>40;}}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"
}

以上只是查詢了一個判斷,如果想要實現多個條件的判斷,那麼就需要使用and連線。

> db.emp.find({"$and":[{"$where":"this.age>20"},{"$where":"this.age<25"}]}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599148bd0184ff511bf02b91"),
        "name" : "林A",
        "sex" : "男",
        "age" : 22,
        "sal" : 8000,
        "loc" : "北京",
        "course" : [
                "語文",
                "數學",
                "英語",
                "音樂",
                "政治"
        ],
        "parents" : [
                {
                        "name" : "林A父親",
                        "age" : 50,
                        "job" : "農民"
                },
                {
                        "name" : "林A母親",
                        "age" : 49,
                        "job" : "工人"
                }
        ]
}

雖然這種形式的操作可以實現資料查詢,但是最大的缺點是將在MongoDB裡面儲存的BSON資料變成了JavaScript的語法結構,這樣的方式不方便使用資料庫索引機制。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144299/,如需轉載,請註明出處,否則將追究法律責任。

相關文章