pymongo基礎:經常使用操做

跟表添加或更新某個字段

res = await SS_ClassRoom.update_one(
            {
                "$and": [ {"Class_Room_Uid": self.Class_Room_Uid}, {"Rucode": self.Rucode} ] }, { "$set": { "LoginStatus": ConstStatusLogout # 0 未登陸 1 登陸  } } )

在表中插入文檔

newRecord = {
    "StudentMid": p["StudentMid"], "StudentGroupMid": p["StudentGroupMid"], "AttendenceType": p["AttendenceType"], #1.正常 2.遲到 3.請假 4.曠課 "Lessons": p["Lessons"], "Subject": p["Subject"], "PublicClass": p["PublicClass"], "PunchDateTime": datetime.strptime(p["PunchDateTime"], "%Y-%m-%d %H:%M:%S"), "CreateDateTime": datetime.utcnow() } # 插入處理 try: oldRecord = await SS_AttendenceLog.find_one(filter=dupRecodFilter, sort=[('Created_Time', -1)]) delRes = await SS_AttendenceLog.delete_many(filter=dupRecodFilter) newRes = await SS_AttendenceLog.insert_one(newRecord) except Exception as ex: self.resData["failed"].append(p) continue

 

MongoDB的upsert狀態判斷和pymongo使用方法

在mongo中,有一個命令很是的方便,就是upsert,顧名思義就是update+insert的做用html

根據條件判斷有無記錄,有的話就更新記錄,沒有的話就插入一條記錄python

upsert的使用方法:shell

 db.user.insert({"name":"user1", "age":12, "sex":"male"})
 db.user.insert({"name":"user2", "age":13, "sex":"male"}) db.user.insert({"name":"user3", "age":14, "sex":"male"})

 

查詢數據庫

db.user.find()
{ "_id" : ObjectId("54c75876662ee1617463f0a3"), "name" : "user1", "age" : 12, "sex" : "male" }
{ "_id" : ObjectId("54c75880662ee1617463f0a4"), "name" : "user2", "age" : 13, "sex" : "male" }
{ "_id" : ObjectId("54c7588d662ee1617463f0a5"), "name" : "user3", "age" : 14, "sex" : "male" }

  

更新網絡

db.user.update({"name":"user1"}, {"$set":{"age":21}}, {"upsert":"true"})
db.user.find()

 

查需結果app

{ "_id" : ObjectId("54c75876662ee1617463f0a3"), "name" : "user1", "age" : 21, "sex" : "male" }
{ "_id" : ObjectId("54c75880662ee1617463f0a4"), "name" : "user2", "age" : 13, "sex" : "male" }
{ "_id" : ObjectId("54c7588d662ee1617463f0a5"), "name" : "user3", "age" : 14, "sex" : "male" }  

  

# 判斷若是找到,就更新,沒找到就執行插入的操做(這裏由於找到了user1,因此只是更新,不會執行$setOneInsert這條語句)post

db.user.update({"name":"user1"}, {"$set":{"age":21}, "$setOnInsert":{"sex":"female"}}, {"upsert":"true"})
db.user.find()

  

{ "_id" : ObjectId("54c75876662ee1617463f0a3"), "name" : "user1", "age" : 21, "sex" : "male" }
{ "_id" : ObjectId("54c75880662ee1617463f0a4"), "name" : "user2", "age" : 13, "sex" : "male" }
{ "_id" : ObjectId("54c7588d662ee1617463f0a5"), "name" : "user3", "age" : 14, "sex" : "male" }

 

#這裏執行的的是插入的操做,由於沒有找到user4url

db.user.update({"name":"user4"}, {"$set":{"age":21}, "$setOnInsert":{"sex":"female"}}, {"upsert":"true"})\
db.user.find()

  

查詢結果spa

{ "_id" : ObjectId("54c75876662ee1617463f0a3"), "name" : "user1", "age" : 21, "sex" : "male" }
{ "_id" : ObjectId("54c75880662ee1617463f0a4"), "name" : "user2", "age" : 13, "sex" : "male" } { "_id" : ObjectId("54c7588d662ee1617463f0a5"), "name" : "user3", "age" : 14, "sex" : "male" } { "_id" : ObjectId("54c75a07478a805237d087c3"), "name" : "user4", "age" : 21, "sex" : "female" }

 

在一個數據庫中全額插入一個字段,默認的類型爲int code

db.SS_School.update({},{$set: {"AttendenceType":NumberInt(1)}},{multi: true})

 

在mongod中使用正則進行檢索 

 db.getCollection('SS_School').find({$or:[{"SchoolName":{$regex:"網絡"},"SchoolId":{$regex:"340"}}]})

 

        if SearchFiled:
            _fiter = {"$or": [{"SchoolName": {'$regex': SearchFiled}}, {"SchoolId": {'$regex': SearchFiled}},], 'AttendenceType': 1} count = await School.count(filter=_fiter) SchoolRes = await School.find(filter=_fiter,per_page=per_page, page=page) else: _fiter = {"AttendenceType": 1} SchoolRes = await School.find(filter=_fiter, per_page=per_page, page=page) count = await School.count(filter=_fiter)

 

在同一個主機下,把Mongo中的一個數據庫裏的表複製到另外一個數據庫中

db.<collection_name>.find().forEach(function(d){ db.getSiblingDB('<new_database>')['<collection_name>'].insert(d); });

 

修改mongo中的字段名

 db.getCollection('character').update({},{$rename:{"desc":"DESC"}},false,true)

 

刪除表中的一個字段

db.User.update({},{$unset:{'address':''}},false, true)
相關文章
相關標籤/搜索