模糊查詢
mySql中模糊查詢用到的是like語句
select *from dbname where name like 'ab'
在mongodb中我們是下面的寫法 注意不加 "
db.getCollection("handle_info").find({"handle_name":/88.182/}) # 不是"/88.182/"
或
db.handle_info.find({"handle_name":/88.182/})
查詢包含88.182
{"handle_name":/88.182/}
查詢以88.182開頭
{"handle_name":/^88.182/}
查詢以88.182結(jié)尾
{"handle_name":/88.182^/}
查詢忽略大小寫
{"handle_name":/abcd/i}
查找數(shù)量
db.getCollection('******').countDocuments({}) # 查找符合要求的數(shù)據(jù)總數(shù)
num1 = col.count_documents({}) # python 寫法
刪除
db.getCollection('******').deleteOne({ }) # 刪除一條符合要求的
col2.delete_one({'delieveryMode': {'$regex':'校園送'} }) # 查指定字段一個值 python中的寫法
db.getCollection('******').deleteMany({ }) # 刪除所有符合要求的
col2.delete_many({'delieveryMode': {'$regex':'校園送'} }) # 查指定字段 所有值 python中的寫法
查找數(shù)據(jù)
db.getCollection('*****').find({}) # 查找所有符合要求的
ret = col.find({}) # python寫法
查看指定字段的值
# num2 = col2.distinct("name") # 查指定字段 所有值
刪表
col.drop() # 刪表 # python 寫法
高級查詢 參考
1,隱式and查詢暇番,查詢年齡大于15嗤放,且性別屬于男性的數(shù)據(jù)。
db.tb.find({"age":{"$gt":15},"sex":"male"})
//關(guān)鍵字$gt是大于的意思
2壁酬,顯式and查詢次酌,查詢年齡大于等于15,且性別不為女性的數(shù)據(jù)舆乔。
db.tb.find({"$and":[
{"age":{"$gte":15}},{"sex":{"$ne":"female"}}
]})
//關(guān)鍵字$gte是大于等于的意思岳服,$ne是不等于的意思
3,and的顯式與隱式混合查詢希俩,查詢work是player吊宋,且性別為女性,年齡小于18颜武。
db.tb.find({
"$and":[
{"work":"player"},{"sex":{"$ne":"male"}}
],"age":{"$lt":18}
})
//關(guān)鍵字$lt是小于的意思
4璃搜,or查詢,查詢年齡大于20鳞上,或者工作是player的數(shù)據(jù)这吻。
db.tb.find({
"$or":[{"age":{"$gt":20}},{"work":"player"}]
})
5,and和or混合查詢因块,查詢興趣愛好不是踢足球橘原,或者姓名是Amy,并且滿足姓名不是Amy,或者年齡小于18的數(shù)據(jù)趾断。
db.tb.find({
"$and":[
{"$or":[{"hobby":{"$ne":"play football"}},{"name":"Amy"}]},
{"$or":[{"name":{"$ne":"Amy"}},{"age":{"$lt":18}}]}
]
})
db.tb2.insert([{"職業(yè)":"程序員","個人信息":{"姓名":"Mr.Pan_學(xué)狂","年齡":21,"性別":"男"}},
{"職業(yè)":"教師","個人信息":{"姓名":"小美","年齡":19,"性別":"女"}},
{"職業(yè)":"服務(wù)員","個人信息":{"姓名":"小明","年齡":17,"性別":"男"}}])
image.png
查詢嵌入式文檔中個人信息的年齡大于18的數(shù)據(jù)拒名。
db.tb2.find({"個人信息.年齡":{"$gt":18}})
查詢嵌入式文檔中個人信息的性別不是男性,或者職業(yè)不是程序員的數(shù)據(jù)芋酌。
db.tb2.find({"$and":[{"職業(yè)":"程序員"},{"個人信息.性別":{"$ne":"女"}}]})
db.tb3.insertMany([{"name":"小紅","崗位":["數(shù)據(jù)分析師","數(shù)據(jù)架構(gòu)師","前端開發(fā)工程師","網(wǎng)絡(luò)安全工程師"],"薪資":[12000,18000,10000,13000]},
{"name":"小美","崗位":["后端開發(fā)工程師","數(shù)據(jù)運(yùn)維人員","測試工程師","數(shù)據(jù)庫管理員"],"薪資":[13000,8500,11000,10000]}])
image.png
查詢集合中崗位不包含測試工程師的數(shù)據(jù)增显。
db.tb3.find({"崗位":{"$ne":"測試工程師"}})
查詢集合中薪資低于10000和高于10000范圍的數(shù)據(jù)。
db.tb3.find({"薪資":{"$lt":10000,"$gte":10000}})
按字段長度查詢脐帝,查詢集合中薪資字段長度為4的數(shù)據(jù)同云。
db.tb3.find({"薪資":{"$size":4}})
按索引查詢,查詢集合中薪資的第一位且范圍在10000到13000之間的數(shù)據(jù)
db.tb3.find({"薪資.0":{"$gt":10000,"$lt":13000}})