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" 在陣列的順序。
留言
張貼留言