python & mongo問題記錄


背景介紹

使用python操作mongo進行的一些操作記錄,為了方便日后可以快速的解決類似問題。

准備工作

為了盡可能簡單的說明,我將插入幾條簡單的數據。

from pymongo import MongoClient

client = MongoClient('mongodb://your-mongo-username:your-mongo-password@localhost:27017/your-db')
db = client.your-db
collection = db.your_collection

獲得集合句柄后,則可以先進行插入數據操作。

collection.insert_one({"name":"frank","age":24})
collection.insert_one({"name":"landpack","age":4})
collection.insert_one({"name":"jack","age":14})

然后可以執行一條查詢操作,來看看結果。

>>> collection.find()
<pymongo.cursor.Cursor object at 0x7f0c13017750>

如果你也是使用python的交互環境進行運行如上代碼的你也會看到我們得到了一個游標。
接下來把游標里面的數據拿出來。

>>> cursor = collection.find()
>>> for c in cursor:
...     print c
... 
{u'age': 24, u'_id': ObjectId('58455610e138231725c0f6eb'), u'name': u'frank'}
{u'age': 4, u'_id': ObjectId('58455622e138231725c0f6ec'), u'name': u'landpack'}
{u'age': 14, u'_id': ObjectId('58455631e138231725c0f6ed'), u'name': u'jack'}
>>> 

####查詢最新的一條記錄
下面我們來研究第一個主題,查詢最新的一條記錄。也就是最后插入的一條記錄。

現在有那么多條記錄,假設我們只關心其中最后插入的那條,我們可以用下面的方式。

>>> cursor = collection.find().limit(1).sort('_id', -1)
>>> for c in cursor:
...     print c
... 
{u'age': 14, u'_id': ObjectId('58455631e138231725c0f6ed'), u'name': u'jack'}

可以看到,我們得到了想要的結果,再試試如下方式。

>>> for c in cursor:
...     print c
... 
{u'age': 14, u'_id': ObjectId('58455631e138231725c0f6ed'), u'name': u'jack'}

同樣拿到了想要的結果,我們還可以用下面的方式。

>>> cursor = collection.find().limit(1).sort('$natural',-1)
>>> for c in cursor:
...     print c
... 
{u'age': 14, u'_id': ObjectId('58455631e138231725c0f6ed'), u'name': u'jack'}

現在我們使用這幾種方式都拿到了想要的結果,那么哪種方式更加高效呢?這個我暫時也沒對比過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM