日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python操作mongodb语法_python 操作MongoDB

發(fā)布時間:2025/3/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python操作mongodb语法_python 操作MongoDB 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝MongoDB

啟動數(shù)據(jù)庫:安裝完成指定數(shù)據(jù)庫存放路徑 mongod.exe --dbpath c:\data\db

進入目錄后運行mongo.exe 成功

創(chuàng)建數(shù)據(jù)庫

>use mydb

switched to db mydb>db

mydb

> book = {"title":"from beginner to master", "author":"qiwsir", "lang":"python"}

{"title" : "from beginner to master","author" : "qiwsir","lang" : "python"}>db.books.insert(book)>db.books.find()

{"_id" : ObjectId("554f0e3cf579bc0767db9edf"), "title" : "from beginner to master", "author" : "qiwsir", "lang" : "Python" }

db 指向了數(shù)據(jù)庫 mydb,books 是這個數(shù)據(jù)庫里面的一個集合(類似 mysql 里面的表),向集合 books 里面插入了一個文檔(文檔對應(yīng) mysql 里面的記錄)。“數(shù)據(jù)庫、集合、文檔”構(gòu)成了 mongodb 數(shù)據(jù)庫。

用到數(shù)據(jù)庫,就通過use xxx,如果不存在就建立;用到集合,就通過db.xxx來使用,如果沒有就建立。可以總結(jié)為“隨用隨取隨建立”。

投影

在查詢到的返回結(jié)果中,只選擇必要的字段,而不是選擇一個文檔的整個字段

如:一個文檔有5個字段,需要顯示只有3個,投影其中3個字段即可

語法:

參數(shù)為字段與值,值為1表示顯示,值為0不顯示

db.集合名稱.find({},{字段名稱:1,...})

對于需要顯示的字段,設(shè)置為1即可,不設(shè)置即為不顯示

特殊:對于_id列默認(rèn)是顯示的,如果不顯示需要明確設(shè)置為0

例1

db.stu.find({},{name:1,gender:1})

例2

db.stu.find({},{_id:0,name:1,gender:1})

排序

方法sort(),用于對結(jié)果集進行排序

語法

db.集合名稱.find().sort({字段:1,...})

參數(shù)1為升序排列

參數(shù)-1為降序排列

例1:根據(jù)性別降序,再根據(jù)年齡升序

db.stu.find().sort({gender:-1,age:1})

消除重復(fù)

方法distinct()對數(shù)據(jù)進行去重

語法

db.集合名稱.distinct('去重字段',{條件})

例1:查找年齡大于18的性別(去重)

db.stu.distinct('gender',{age:{$gt:18}})

安裝 Pymongo

pip install Pymongo

>>> importPymongo>>> client = pymongo.MongoClient("localhost", 27017)

剛才已經(jīng)建立了一個數(shù)據(jù)庫 mydb,并且在這個庫里面有一個集合 books,于是:

>>> db = client.mydb

或者

>>> db = client['mydb']

獲得數(shù)據(jù)庫 mydb,并賦值給變量 db(這個變量不是 mongodb 的 shell 中的那個 db,此處的 db 就是 Python 中一個尋常的變量)。

>>>db.collection_names()

[u'system.indexes', u'books']

查看集合,發(fā)現(xiàn)了我們已經(jīng)建立好的那個 books,于是在獲取這個集合,并賦值給一個變量 books:

>>> books = db["books"] 或者 >>> books = db.books

增刪改查

>>>books.find_one()

{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

在 mongodb 的 shell 中是這樣子的:

>db.books.findOne()

{"_id" : ObjectId("554f0e3cf579bc0767db9edf"),"title" : "from beginner to master","author" : "qiwsir","lang" : "python"}

新增和查詢

>>> b2 = {"title":"physics", "author":"Newton", "lang":"english"}>>>books.insert(b2)

ObjectId('554f28f465db941152e6df8b')

>>>books.find().count()2

>>> for i inbooks.find():

...printi

...

{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

批量插入

>>> n1 = {"title":"java", "name":"Bush"}>>> n2 = {"title":"fortran", "name":"John Warner Backus"}>>> n3 = {"title":"lisp", "name":"John McCarthy"}>>> n =[n1, n2, n3]>>>n

[{'name': 'Bush', 'title': 'java'}, {'name': 'John Warner Backus', 'title': 'fortran'}, {'name': 'John McCarthy', 'title': 'lisp'}]>>>books.insert(n)

[ObjectId('554f30be65db941152e6df8d'), ObjectId('554f30be65db941152e6df8e'), ObjectId('554f30be65db941152e6df8f')]

按條件查詢

>>> books.find_one({"name":"Bush"})

{u'_id': ObjectId('554f30be65db941152e6df8d'), u'name': u'Bush', u'title': u'java'}

對于查詢結(jié)果,還可以進行排序:

>>> for i in books.find().sort("title", pymongo.ASCENDING):

...printi

...

{u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz'}

{u'_id': ObjectId('554f30be65db941152e6df8e'), u'name': u'John Warner Backus', u'title': u'fortran'}

{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

{u'_id': ObjectId('554f30be65db941152e6df8d'), u'name': u'Bush', u'title': u'java'}

{u'_id': ObjectId('554f30be65db941152e6df8f'), u'name': u'John McCarthy', u'title': u'lisp'}

{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

這是按照"title"的值的升序排列的,注意 sort() 中的第二個參數(shù),意思是升序排列。如果按照降序,就需要將參數(shù)修改為Pymongo.DESCEDING,也可以指定多個排序鍵。

更新數(shù)據(jù)

對于已有數(shù)據(jù),進行更新,是數(shù)據(jù)庫中常用的操作。比如,要更新 name 為 Hertz 那個文檔:

在更新的時候,用了一個$set修改器,它可以用來指定鍵值,如果鍵不存在,就會創(chuàng)建。

>>> books.update({"name":"Hertz"}, {"$set": {"title":"new physics", "author":"Hertz"}})

{u'updatedExisting': True, u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}>>> books.find_one({"author":"Hertz"})

{u'title': u'new physics', u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz', u'author': u'Hertz'}

關(guān)于修改器,不僅僅是這一個,還有別的呢。

刪除

刪除可以用 remove() 方法:

>>> books.remove({"name":"Bush"})

{u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}>>> books.find_one({"name":"Bush"})>>>

也可以根據(jù) mongodb 的語法規(guī)則,寫個條件,按照條件刪除。

索引

索引的目的是為了讓查詢速度更快,當(dāng)然,在具體的項目開發(fā)中,要視情況而定是否建立索引。因為建立索引也是有代價的。

>>> books.create_index([("title", pymongo.DESCENDING),])

u'title_-1'

數(shù)據(jù)導(dǎo)出CSV

在用mongoexport導(dǎo)出csv文件時,發(fā)現(xiàn)數(shù)據(jù)庫中的中文在excel中都顯示為亂碼,用notepad打開則正常。

解決辦法: 在notepad中,將編碼格式改為UTF-8,保存,再用excel打開,則中文可正常顯示。

總結(jié)

以上是生活随笔為你收集整理的python操作mongodb语法_python 操作MongoDB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。