MongoDB之資料查詢(邏輯運算)

stonebox1122發表於2017-08-29
邏輯運算注意就是三種型別:與($and)、或($or),非($not,$nor)。

範例:查詢年齡在20~30歲的人員資訊
> db.emp.find({"age":{"$gte":20,"$lte":30}}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "週五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2b"),
        "name" : "吳六",
        "sex" : "男",
        "age" : 30,
        "sal" : 2500,
        "loc" : "重慶"
在進行邏輯運算的時候“and”的連線是最容易的,因為只需要利用“,”分隔若干條件就可以了。

範例:查詢年齡不是30的人員
> db.emp.find({"age":{"$ne":30}}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孫三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"
}
{
        "_id" : ObjectId("599108433268c8e84253be2d"),
        "name" : "王八",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京"
}

範例:查詢年齡大於30歲,或者薪水大於5000的人員資訊
> db.emp.find({"$or":[{"age":{"gt":30}},{"sal":{"$gt":5000}}]}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "週五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108433268c8e84253be2d"),
        "name" : "王八",
        "sex" : "男",
        "age" : 35,
        "sal" : 8000,
        "loc" : "北京"

範例:或的求反操作
> db.emp.find({"$nor":[{"age":{"gt":30}},{"sal":{"$gt":5000}}]}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孫三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be2b"),
        "name" : "吳六",
        "sex" : "男",
        "age" : 30,
        "sal" : 2500,
        "loc" : "重慶"
}
{
        "_id" : ObjectId("599108423268c8e84253be2c"),
        "name" : "鄭七",
        "sex" : "女",
        "age" : 50,
        "sal" : 4700,
        "loc" : "成都"
}
針對於或的操作可以實現一個求反的功能。
在這幾個邏輯運算當中,與的連線最簡單,而或的連線需要為資料設定陣列的過濾條件。


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

相關文章