2020/4/2
Mongodb使用的是類似與json字串的形式存盤資料
[
{
key:value
},
{
key:value
},
]
Mongodb使用了不存在的物件,即創建該物件
use db 使用db資料庫
show dbs 查看當前服務器中寫在磁盤上的資料庫
show tables 查看資料庫中的collection
db 查看當前使用的資料庫
1.增刪改查:
增:
db.collection.insert({資料}) 自動生成 _id : ObjectId("")
官方推薦:
db.collection.insertOne({資料}) 插入一條資料
db.collection.insertMany([{資料},{資料}]) 插入多條資料
查:
db.collection.find({條件})
db.collection.findOne({條件})
改:
db.collection.update({條件},{$修改器:{資料}})
官方推薦:
db.collection.updateOne({條件},{$修改器:{資料}}) 更新一條資料
db.collection.updateMany({條件},{$修改器:{資料}}) 更新所有資料
刪:
db.collection.remove({條件})
官方推薦:
db.collection.deleteOne({條件}) 洗掉一條資料
db.collection.deleteMany({條件}) 洗掉所有符合條件的資料
清除collection:
db.collection.drop()
2.$關鍵字
數學比較符:
$lt
$lte
$gt
$gte
$eq :
db.collection.find("score":{$gt:80})
查詢關鍵字:
$or db.collection.find({$or:[{name:1},{age:73}]})
$in db.collection.find({age:{$in:[1,2,3,4]}}) #符合其中一個條件即可
$all db.collection.find({hobby:{$all:[1,2,3,4]}}) #子集查詢
2018年12月25日:
1.$修改器 :
$set 簡單粗暴 {name:value} dict["name"]=value
$unset 簡單粗暴的洗掉欄位 {$unset:{name:1}} del dict["name"]
db.user_info.updateOne({age:200},{$unset:{age:1}})
$inc 參考增加
db.user_info.updateMany({},{$inc:{age:1}})
array操作
$push 在array中追加一個新的元素 [].append(item)
db.user_info.updateOne({name:"200wansui"},{$push:{hobby:10}})
$pull 在array中洗掉一個的元素 [].remove(item) [].pop(-1)
db.user_info.updateOne({name:"200wansui"},{$pull:{hobby:0}})
$pop 不含索引 -1 從前往后 1 從后往前
db.user_info.updateOne({name:"200wansui"},{$pop:{hobby:1}})
2.$ 字符
db.user_info.updateOne({hobby:6},{$set:{"hobby.$":"六"}})
保存符合索引條件資料的下標
3.Object 字典操作
db.user_info.updateOne({name:"200wansui"},{$inc:{"info.tizhong":-5}})
db.user_info.updateOne({name:"200wansui"},{$set:{"info.long":12.5}})
4.array + Object
db.user_info.updateOne({"hobby.shengao":150},{$set:{"hobby.$.long":14}})
5.limit
db.user_info.find({}).limit(5)
選取資料從當前位置選擇5個
6.skip 跳過
db.user_info.find({}).skip(2)
從0開始跳過2條資料為當前位置
7.sort
db.user_info.find({}).sort({ id:-1 })
根據ID進行排序 -1倒敘 1正序
8.limit+skip+sort
db.user_info.find({}).limit(5).skip(10)
db.user_info.find({}).limit(c).skip((p-1)*c)
db.user_info.find({}).limit(5).skip(5).sort({ id:-1 })
優先級最高的是 sort
其次優先為 skip
最低優先級 limit
9.pymongo
import pymongo
from bson import ObjectId
mongo_client = pymongo.MongoClient(host="127.0.0.1",port=27017)
MONGO = mongo_client["資料庫"]
查詢資料
res = list(MONGO.user_info.find({}))
print(res)
res = MONGO.user_info.find_one({"id":20})
res["_id"] = str(res["_id"])
res = list(MONGO.user_info.find({"$or":[{"name":"dwb"},{"id":15}]}))
print(res)
ObjectId json操作
res_obj = MONGO.user_info.find_one({"_id":ObjectId(res["_id"])})
print(res_obj)
print(res.get("name"),type(res.get("_id")),type(res))
import json
res_json = json.dumps(res)
print(res_json)
增加資料
res = MONGO.user_info.insert_one({"name":"pymongo","age":666})
print(res,res.inserted_id)
res = MONGO.user_info.insert_many([{"name":"pymongo","age":666},{"name":"pymongo","age":666}])
print(res,res.inserted_ids)
for doc in res:
print(doc)
修改資料
res = MONGO.user_info.update_many({"age":666},{"$set":{"name":"pydwb","age":999}})
print(res,dir(res),res.raw_result)
洗掉資料
res = MONGO.user_info.delete_one({"id":20})
res = MONGO.user_info.delete_many({"name":1})
print(res,dir(res),res.raw_result)
skip sort limit
res = list(MONGO.user_info.find({}).limit(5))
print(len(res))
res = list(MONGO.user_info.find({}).limit(5).skip(5))
print(len(res),res)
res = list(MONGO.user_info.find({}).sort("age",pymongo.DESCENDING))
print(res)
res = list(MONGO.user_info.find({}).sort("age",pymongo.DESCENDING).skip(5).limit(2))
print(res)
python 的 update
res = MONGO.user_info.find_one({"name":"200wansui"})
print(res)
res.get("info")["shengao"] = 170
res.get("info")["tizhong"] = 130
res.get("info")["long"] = 18.5
MONGO.user_info.update_one({"_id":res.get("_id")},{"$set":res})
res = MONGO.user_info.find_one({"name":"200wansui"})
print(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/12746.html
標籤:NoSQL
上一篇:Redis系列(一):小試牛刀
