自定義Mongodb的操作介面

2021-10-05 02:25:22 字數 2356 閱讀 6894

from pymongo import mongoclient

class

mongoapi

(object):

def__init__

(self, db_name, table_name, host=

"127.0.0.1"

, port=

27017):

self.db_name = db_name

self.table_name = table_name

self.host = host

self.port = port

self.conn = mongoclient(host=self.host, port=self.port)

self.db = self.conn[self.db_name]

self.table = self.db[self.table_name]

defget_one

(self, query)

:# 獲取乙個指定的值,並且將_id欄位不返回

return self.table.find_one(query, projection=

)def

get_query_all

(self, query)

:# 返回符合查詢條件的所有值

return self.table.find(query)

defget_all

(self)

:# 返回所有資料

return self.table.find(

)def

add(self, kv_dict)

:# 插入乙個字典值

return self.table.insert_one(kv_dict)

defdelete

(self, query)

:# 刪除指定條件的所有值

return self.table.delete_many(query)

defis_exist

(self, query)

:# 判斷是否有值滿足當前的查詢條件

ret = self.table.find_one(query)

return ret is

notnone

defupdate

(self, query, kv_dict)

:# 更新記錄,如果沒有就會插入

self.table.update_one(query,

, upsert=

true

)def

q_sort

(self,column, order=

1, query=):

# 查詢結果後,按照column進行排序通過order來進行排序,預設為公升序order:1,返回所有資料 降序為-1,

return self.table.find(query)

.sort(column, order)

if __name__ ==

'__main__'

: ma = mongoapi(db_name=

'student'

, table_name=

"16jixinan"

) students =[,

,]for student in students:

# 去重插入

ma.update(

, student)

students_all = ma.get_all(

)for student in students_all:

print

(student)

print

('--'*20

) student_sort = ma.q_sort(

'age'

)# 按照age進行公升序排序

for student in student_sort:

print

(student)

print

('--'*20

) student_is_exist = ma.is_exist(

)# 判讀滿足條件的記錄是否存在

print

(student_is_exist)

student_is_exist = ma.is_exist(

)print

(student_is_exist)

ma.delete(

)# 刪除id為2的值

測試結果:

----------------------------------------

true

false

ChatterBot自定義MongoDB路徑

預設資料庫為slite3,已經不能滿足需求,需改為mongodb class bot def init self self.my bot chatbot mode storage adapter chatterbot.storage.mongodatabaseadapter filters chat...

自定義MongoDB的ObjectId

mongodb的objectid,由12位組成,其中前四位是乙個unix的時間戳,精確到秒,這樣就產生乙個問題,如果按objectid排序的話,可能得到的順序,和資料插入的順序是有差別的。由此,需要自定義objectid生成器,也是12位組成,只是組成內容有差異,如下 12 8位 時間戳 48位 s...

自定義介面

好久沒寫介面了 好像以前也沒怎麼寫過.已經忘記怎麼寫了 就自己動手寫乙個熟悉一下 demo很簡單 就三個類 名字就隨便起了 public inte ce mylistener2 public class a catch interruptedexception e listener.setliste...