zoukankan      html  css  js  c++  java
  • 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'}
    

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

  • 相关阅读:
    内存管理简介之Buddy算法和slab分配
    进程通信方式介绍
    Linux内核网络栈实现分析(十一)驱动程序层(下)
    Linux内核网络协议栈深入分析(二)sk_buff的操作函数
    Linux内核网络协议栈深入分析(一)与sk_buff有关的几个重要的数据结构
    内核源码学习:伙伴算法
    寒假Day16Dinic模板更新+优化
    寒假Day20:数位dp
    寒假Day21:Catalan Square卡特兰数 JAVA写大数
    寒假Day17UVALive3231Fair Share(最大流+二分)
  • 原文地址:https://www.cnblogs.com/landpack/p/6135319.html
Copyright © 2011-2022 走看看