背景介绍

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

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

python & mongo问题记录的更多相关文章

  1. Python Mongo操作

    # -*- coding: utf-8 -*- ''' Python Mongo操作Demo Done: ''' from pymongo import MongoClient conn = None ...

  2. Python爬虫个人记录(三)爬取妹子图

    这此教程可能会比较简洁,具体细节可参考我的第一篇教程: Python爬虫个人记录(一)豆瓣250 Python爬虫个人记录(二)fishc爬虫 一.目的分析 获取煎蛋妹子图并下载 http://jan ...

  3. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  4. Mongo学习记录

    引子 最近做项目利用mongo记录的日志做数据统计.着了非关系型数据库的迷,于是乎买了本<MongoDB实战>学习了一番.记录一下学习笔记,共享之. 准备 我在自己的Linux服务器上装了 ...

  5. python 文本编辑基础记录

    不熟悉编码方式,同时python的编码方式折磨我了很长时间,记录下,以免忘记,本文内容存在错误,是自己理解,看到仅当参考 Unicode 是字符集,有点像一本字典,utf-8是在unicode这本字典 ...

  6. Python简单爬虫记录

    为了避免自己忘了Python的爬虫相关知识和流程,下面简单的记录一下爬虫的基本要求和编程问题!! 简单了解了一下,爬虫的方法很多,我简单的使用了已经做好的库requests来获取网页信息和Beauti ...

  7. python爬虫学习记录——各种软件/库的安装

    Ubuntu18.04安装python3-pip 1.apt-get update更新源 2,ubuntu18.04默认安装了python3,但是pip没有安装,安装命令:apt install py ...

  8. [Java/Python] java调用python脚本问题记录

    Java调用Python的的两种方式 1.Runtime private static String call_python(String input_argv) { String python_py ...

  9. Python爬虫学习记录【内附代码、详细步骤】

    引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...

随机推荐

  1. 老生长谈的$.extend()方法

    jq的extend()是jq插件扩展很重要的部分,到这里证明是可以自己在jq的基础上,分为两种方法去扩展或开发,为jq本身添加一个方法,可以理解成扩展静态方法和自定义方法. 今天有看到一篇帖子,对这部 ...

  2. Python中的生成器与yield

    对于python中的yield有些疑惑,然后在StackOverflow上看到了一篇回答,所以搬运过来了,英文好的直接看原文吧. 可迭代对象 当你创建一个列表的时候,你可以一个接一个地读取其中的项.一 ...

  3. css的padding

  4. 修改radio与check样式

    一般的radio与check的样式很难看,这个时候就需要我们自己修改其样式 逻辑思维: 1.用label包裹input标签以及样式标签,然后将radio定位到界面以外,设置样式标签的样式 2.使用伪类 ...

  5. bzoj3123: [Sdoi2013]森林

    题面传送门 复出的第一道题.. md就遇到坑了.. 简单来说就是可持久化线段树+启发式合并啊.. 感觉启发式合并好神奇好想学 每一次建边就暴力合并,每一个节点维护从根到它的权值线段树 按照题面的话最省 ...

  6. [面试] Design Questions

    Uber总是考一些系统设计的题目,而且重复率很高,汇总了一下地里的所有design的题目,希望可以跟小伙伴们讨论下. Uber Design Questions 1.    让design uber ...

  7. Swift的关键字

    在声明中使用关键字 let   :声明一个常量 var :声明一个变量 class :声明一个类 static :静态的 deinit :反初始化方法?析构方法 init :构造方法?初始化方法 en ...

  8. QGis、Gdal本地中文路径问题

    编译qgis完整项目后,由于Gdal库的原因,中文路径下通过添加矢量数据中数据库中是没有OGR的Oracle数据库功能的: 最开始打算通过重新编译gadl库从内部支持中文的(有成功的麻烦也请告诉我), ...

  9. 用Eclipse搭建ssh框架

    问:ssh是哪三大框架,以及他们的作用是什么? 答:分别是struts,spring,hibernate. struts的作用是:是web层,其核心是mvc模式,他可以自动获取参数,自动类型转换,自动 ...

  10. js二进制与十进制互转

    十进制转换为二进制: var num = 100; console.log(num.toString(2)); toString()方法可把一个 Number 对象转换为一个字符串,并返回结果. 语法 ...