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'}
现在我们使用这几种方式都拿到了想要的结果,那么哪种方式更加高效呢?这个我暂时也没对比过。
Can we drop this masquerade