背景介绍

使用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. 数据结构0103汉诺塔&八皇后

    主要是从汉诺塔及八皇后问题体会递归算法. 汉诺塔: #include <stdio.h> void move(int n, char x,char y, char z){ if(1==n) ...

  2. 增删改查--windows下mysql客户端--表的使用

    >>>>>>>>>>>>>>>>>>>> selet 5种子句之where常用运 ...

  3. java提升路线书单(原文自知乎刘欣)

    复制黏贴自知乎刘欣大神,作为个人的书单与指导路线 原文链接:https://www.zhihu.com/question/19848946/answer/92536822   刘欣 追寻内心的真正兴趣 ...

  4. 基于dubbo构建分布式项目与服务模块

      关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...

  5. Map排序

    HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 ...

  6. 让mysql不能为空的字段为空时也能插入

    第一步: 在mysql安装目录中找到my.ini将: #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTIT ...

  7. Java数据结构——栈的应用(以数制转换为例子)

    看一万遍,不如自己动手实践,请不要直接copy代码,先自己去理解例子实现的原理,然后试着自己动手去实践. 用Java去实现栈操作,会用到stack这个类,这类中有几个方法需要知道他们的用法  bool ...

  8. 干货!IT小伙伴们实用的网站及工具大集合!持续更新!

    1.Git 还在担心自己辛辛苦苦写的代码被误删了吗?还在担心自己改错了代码不能挽回吗?还在苦恼于多人开发合作找不到一个好的工具吗?那么用Git就对 了,Git是一个开源的分布式版本控制系统,用以有效. ...

  9. web存储

    1. cookie: 如果想将cookie取到,可以通过document.cookie;取到的是所有的cookie数据 他是一直保存在网页中的:他有一个时间的限制,如果时间过期,则删除 写入:docu ...

  10. JavaScript_js模拟键盘输入

    function fireKeyEvent(el, evtType, keyCode) { var evtObj; if (document.createEvent) { if (window.Key ...