- mongodb中基本的概念是 文檔(字段)赴蝇、集合(表)糙俗、數(shù)據(jù)庫
1.查看當前數(shù)據(jù)庫
db (默認為test)
2.查看所有數(shù)據(jù)庫
show dbs或者show databases
3.切換數(shù)據(jù)庫
use (如果數(shù)據(jù)庫不存在,則創(chuàng)建,否則切換到指定數(shù)據(jù)庫)
4.刪除當前數(shù)據(jù)庫(注意:先切換到要刪除的數(shù)據(jù)庫)
db.dropDatabase()
5.創(chuàng)建集合
db.createCollection(name,options)
6.查看集合
show collections
7.刪除集合
db.集合名稱.drop()
8.保存
db.集合名稱.save(document)
9.更新
db.test2.update({name:'100cxy'},{name:'cxy100'})
10.數(shù)據(jù)查詢
db.wzry.find({age:5})
db.wzry.findOne({age:5}) 查詢臭觉,只返回第?個
db.wzry.find({age:5}).pretty() 將結(jié)果格式化
一、比較、范圍運算符
- 等于
默認是等于判斷,沒有運算符 - 小于
db.wzry.find({ age : { $lt : 5} } ) - 小于等于
db.wzry.find({ age : { $lte : 5} } ) - 大于
db.wzry.find( { age : { $gt : 2 } }) - 大于等于
$gte (greater than equal) - 不等于
$ne (not equal) - 在范圍內(nèi)
db.wzry.find( {age : { $in : [4,6] } } ) - 不在范圍內(nèi)
db.wzry.find( { age : { $nin : [4,6] } } )
二内地、邏輯運算符
- 邏輯與 (and)
db.wzry.find({age:5,type:'刺客'}) - 邏輯或 (or)
db.wzry.find({$or:[{age:5},{type:'刺客'}]})
三色罚、支持正則表達式
- 以'后'字開頭
-- 第一種
db.wzry.find({name:/^后/})
-- 第二種
db.wzry.find({name:{$regex:'^后'}})
四碰缔、limit和skip
- limit()用于讀取指定數(shù)量的文檔
db.wzry.find().limit(2) - limit()用于讀取指定數(shù)量的文檔
db.wzry.find().limit(2)
五、排序
- ?法sort()戳护, ?于對結(jié)果集進?排序
- db.集合名稱.find().sort({字段:1,...})
- 參數(shù)1為升序排列
- 參數(shù)-1為降序排列
db.wzry.find().sort({age:1})
六金抡、統(tǒng)計個數(shù)
- 方法:count() ?于統(tǒng)計結(jié)果集中?檔條數(shù)
- db.集合名稱.find({條件}).count()
- db.集合名稱.count({條件})
db.wzry.find({age:{$gte:5}}).count()
db.wzry.count({age:{$gte:5}})
七、消除重復(fù)
- 方法:distinct() 對數(shù)據(jù)進行去重
- db.集合名稱.distinct('去重字段',{條件})
db.wzry.distinct('type')
八腌且、mongdb聚合
常用表達式:
$sum 計算總和竟终, $sum:1 表示以?倍計數(shù)
$avg 計算平均值
$min 獲取最?值
$max 獲取最?值
$push在結(jié)果?檔中插?值到?個數(shù)組中
$first根據(jù)資源?檔的排序獲取第?個?檔數(shù)據(jù)
$last根據(jù)資源?檔的排序獲取最后?個?檔數(shù)據(jù)
常用操作:
$group將集合中的?檔分組, 可?于統(tǒng)計結(jié)果
$match過濾數(shù)據(jù)切蟋, 只輸出符合條件的?檔
$project修改輸??檔的結(jié)構(gòu)统捶, 如重命名、 增加、 刪除字段喘鸟、 創(chuàng)建計算結(jié)果
$sort將輸??檔排序后輸出
$limit限制聚合管道返回的?檔數(shù)
$skip跳過指定數(shù)量的?檔匆绣, 并返回余下的?檔
$unwind 將數(shù)組類型的字段進?拆分
九、mongo和python交互
1什黑、導(dǎo)入模塊
import pymongo
2崎淳、建立與MongoClient的連接
client = MongoClient('localhost',27017)
3、得到數(shù)據(jù)庫
db = client.數(shù)據(jù)庫名
4愕把、得到一個集合
collection = db.集合名稱
from pymongo import *
"""
插入方法:
insert_one() 傳入一個字典,表示插入一個文檔
insert_many() 傳入一個列表,列表的元素為字典,插入多條文檔
"""
def insert():
try:
# 1. 創(chuàng)建連接對象
client = MongoClient(host='localhost', port=27017)
# 2. 獲取數(shù)據(jù)庫
# 如果這個數(shù)據(jù)庫不存在,就會在內(nèi)存中虛擬創(chuàng)建
# 當在庫里面創(chuàng)建集合的時候,就會在物理真實創(chuàng)建這個數(shù)據(jù)庫
db = client.demo # 使用demo數(shù)據(jù)庫
# 向stu集合插入數(shù)據(jù)
# 插入一條
db.stu.insert_one({'name': 'zs', 'age': 'lisi'})
# 插入多條
db.stu.insert_many([{'name': 1}, {'name': 2}])
except Exception as e:
print(e)
if __name__ == '__main__':
insert()