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'}

现在我们使用这几种方式都拿到了想要的结果,那么哪种方式更加高效呢?这个我暂时也没对比过。

原文地址:https://www.cnblogs.com/landpack/p/6135319.html