db.集合名稱.find()
db.集合名稱.findOne({})
db.集合名稱.find({})
db.集合名稱.find({}).pretty()
> db.test1.find({age:13})
{ "_id" : ObjectId("5f01dfadb17ac23a4b796ba5"), "name" : "zhang1", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2", "addr" : "shanghai", "age" : 13 }
{ "_id" : ObjectId("5f01dfc5b17ac23a4b796ba8"), "name" : "zhang3", "addr" : "shanghai", "age" : 13 }
> db.test1.find()
{ "_id" : ObjectId("5f01d623b17ac23a4b796b9f"), "name" : "zhangsan" }
{ "_id" : 11111, "name" : "lisi" }
{ "_id" : 11110, "name" : "lisi", "age" : "13" }
{ "_id" : ObjectId("5f01ddb5b17ac23a4b796ba0"), "name" : "wanger", "age" : 12 }
{ "_id" : ObjectId("5f01dfa5b17ac23a4b796ba4"), "name" : "zhang1", "addr" : "beijing", "age" : 12 }
{ "_id" : ObjectId("5f01dfadb17ac23a4b796ba5"), "name" : "zhang1", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2", "addr" : "shanghai", "age" : 13 }
{ "_id" : ObjectId("5f01dfc5b17ac23a4b796ba8"), "name" : "zhang3", "addr" : "shanghai", "age" : 13 }
> db.test1.find({"name":zhang2})
2020-07-05T22:13:47.779+0800 ReferenceError: zhang2 is not defined
> db.test1.find({"name":"zhang2"})
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2", "addr" : "shanghai", "age" : 13 }
> db.test1.find({"name":"zhang2"}).pretty()
{
"_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"),
"name" : "zhang2",
"addr" : "beijing",
"age" : 13
}
{
"_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"),
"name" : "zhang2",
"addr" : "shanghai",
"age" : 13
}
> db.test1.findOne({"name":"zhang2"})
{
"_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"),
"name" : "zhang2",
"addr" : "beijing",
"age" : 13
}
比較運算符
等於:默認是等於判斷,沒有運算符號
小於:$lt
小於等於:$lte
大於:$gt
大於等於:$gte
不等於:$ne
db.stru.find({age:{$gte:}})
範圍運算符
使用"$in","$nin" 判斷是否在某個範圍內
查詢年齡爲18,28的學生
db.stu.find({age:{$in:[18,28,38]}})
> db.test1.find({name:"zhang2",age:12}})
2020-07-05T22:26:11.858+0800 SyntaxError: Unexpected token }
> db.test1.find({name:"zhang2",age:13}})
2020-07-05T22:26:19.498+0800 SyntaxError: Unexpected token }
> db.test1.find({name:"zhang2",age:13})
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2", "addr" : "shanghai", "age" : 13 }
> db.test1.find({name:"zhang2",addr:{$in:["beijing"]}})
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
邏輯運算符
and:在語句中寫多個條件即可
or:使用$or
查詢年齡大於18,或者性別爲false的學生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
查詢年齡大於18或性別爲男的學生,並且姓名是zhangsan
db.stu.find({$or:[{age:{$gt:18}},{gender:true}],name:"zhangsan"})
支持正則表達式
使用//或$regex編寫正則表達式
db.products.find({sku:/^abc/}) 查詢字段sku 以abc結尾的
db.products.find({sku:{$regex:'789$'}}) 查詢字段sku以789結尾的
> db.test2.find({sku:/^abc/})
{ "_id" : 100, "sku" : "abc123", "description" : "Single line description" }
{ "_id" : 101, "sku" : "abc789", "description" : "First line\nSecond line" }
{ "_id" : 104, "sku" : "abc123", "description" : "Single line description" }
> db.test2.find({sku:{$regex:'789$'}})
{ "_id" : 101, "sku" : "abc789", "description" : "First line\nSecond line" }
{ "_id" : 103, "sku" : "xyz789", "description" : "Multiple\nline description" }
limit與skip
方法limit() 用於讀取指定數量的數據
db.集合名稱.find().limit(number)
方法skip()用於跳過指定數量的數據
db.集合名稱.find().skip(number)
> db.test2.find().limit(2)
{ "_id" : 100, "sku" : "abc123", "description" : "Single line description" }
{ "_id" : 101, "sku" : "abc789", "description" : "First line\nSecond line" }
> db.test2.find().skip(2)
{ "_id" : 102, "sku" : "xyz456", "description" : "Many spaces before line" }
{ "_id" : 103, "sku" : "xyz789", "description" : "Multiple\nline description" }
{ "_id" : 104, "sku" : "abc123", "description" : "Single line description" }
自定義查詢
使用$where後面寫一個函數,返回滿足條件的數據,查詢年齡大於30的學生
db.stu.find({$where:function(){
return this.age>30;
}})
> db.test1.find({$where:function(){return this.age=13}})
{ "_id" : ObjectId("5f01d623b17ac23a4b796b9f"), "name" : "zhangsan" }
{ "_id" : 11111, "name" : "lisi" }
{ "_id" : 11110, "name" : "lisi", "age" : "13" }
{ "_id" : ObjectId("5f01ddb5b17ac23a4b796ba0"), "name" : "wanger", "age" : 12 }
{ "_id" : ObjectId("5f01dfa5b17ac23a4b796ba4"), "name" : "zhang1", "addr" : "beijing", "age" : 12 }
{ "_id" : ObjectId("5f01dfadb17ac23a4b796ba5"), "name" : "zhang1", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2", "addr" : "beijing", "age" : 13 }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2", "addr" : "shanghai", "age" : 13 }
{ "_id" : ObjectId("5f01dfc5b17ac23a4b796ba8"), "name" : "zhang3", "addr" : "shanghai", "age" : 13
投影操作
在返回結果中,只選擇需要顯示的字段
字符1表示顯示,0表示不顯示
特殊 對於_id 默認是顯示的,如果不顯示需要明確設置爲0
> db.test1.find({$where:function(){return this.age=13}},{name:1})
{ "_id" : ObjectId("5f01d623b17ac23a4b796b9f"), "name" : "zhangsan" }
{ "_id" : 11111, "name" : "lisi" }
{ "_id" : 11110, "name" : "lisi" }
{ "_id" : ObjectId("5f01ddb5b17ac23a4b796ba0"), "name" : "wanger" }
{ "_id" : ObjectId("5f01dfa5b17ac23a4b796ba4"), "name" : "zhang1" }
{ "_id" : ObjectId("5f01dfadb17ac23a4b796ba5"), "name" : "zhang1" }
{ "_id" : ObjectId("5f01dfb2b17ac23a4b796ba6"), "name" : "zhang2" }
{ "_id" : ObjectId("5f01dfbfb17ac23a4b796ba7"), "name" : "zhang2" }
{ "_id" : ObjectId("5f01dfc5b17ac23a4b796ba8"), "name" : "zhang3" }
排序操作
升序
db.stu.find().sort({age:1})
db.stu.find().sort({age:1,gender:-1})
降序
db.stu.find().sort({age:-1})
統計數目 .count()
消除重複
db.stu.distinct(‘hometown’,{age:{$gt:18}})
> db.test1.distinct("age")
[ "13", 12, 13 ]
> db.test1.count()
9