MongoDB 入門 (7) MongoDB 條件式查詢與多批配

1. find, findOne 限定回傳的鍵值:

find 在不指定的條件下是對 {} 進行查詢,下面兩條指令結果相同:

$ db.dogs.find()
$ db.dogs.find({})

有時候我們不是對符合篩選的資料的所有屬性都感興趣,這時候我們可以只取出特定的鍵值:

$ db.dogs.find({}, {"name":1, "age":1})
$ db.dogs.find({}, {"name": true, "age": true})
$ db.dogs.find({"name":"doggy"}, {"name":1, "age":1})

上面的指令會先對資料篩選 (第一個參數是篩選條件,本例分別是 {} 和 {"name": "doggy"}),然後只取出 "name" 和 "age"。

同樣的原理可以應用在 findOne 身上:

$ db.dogs.findOne({}, {"name":true})

2. 條件式查詢:

常用的數值條件修飾子有(e for equal):

  • "$gt"
  • "$gte"
  • "$lt"
  • "$lte"

我們可以對要查詢的資料設上下限:

$ db.dogs.find({"age": {"$gt": 10, "$lt": 12}})

"$ne" 可以用於多種型別的不等於判斷:

$ db.dogs.find({"name": {"$ne": "doggy"}})

3. 多批配:

"$in" 可以用於單一鍵的多批配情況:

$ db.dogs.find({"name": {"$in": ["white", "black"]}})

"$or" 可以用於批配多鍵的情況:

$ db.dogs.find({"$or": [{"name": "doggy"}, {"age": {"$gt": 10}}]})
$ db.dogs.find({"$and": [{"name": "doggy"}, {"age": {"$gt": 10}}]})

4. Querying Arrays:

用 "$all" 對陣列內容批配:

> db.food.insert({"_id" : 1, "fruit" : ["apple", "banana", "peach"]})
> db.food.insert({"_id" : 2, "fruit" : ["apple", "kumquat", "orange"]})
> db.food.insert({"_id" : 3, "fruit" : ["cherry", "banana", "apple"]})
> db.food.find({fruit : {$all : ["apple", "banana"]}})
// {"_id" : 1, "fruit" : ["apple", "banana", "peach"]}
// {"_id" : 3, "fruit" : ["cherry", "banana", "apple"]}

找出含 "apple" 和 "banana" 的文件,不考慮 "apple" 和 "banana" 在陣列的順序。


留言

熱門文章