文档章节

python mongodb

hyhlinux
 hyhlinux
发布于 2016/12/11 17:27
字数 449
阅读 21
收藏 0

#coding:utf-8
import json
from pymongo import MongoClient
from datetime import datetime
from bson.code import Code

client = MongoClient(host='127.0.0.1', port=27017)
db = client.test
# #insert
# result = db.restaurants.insert_one(
#     {
#         "address": {
#             "street": "2 Avenue",
#             "zipcode": "10075",
#             "building": "1480",
#             "coord": [-73.9557413, 40.7720266]
#         },
#         "borough": "Manhattan",
#         "cuisine": "Italian",
#         "grades": [
#             {
#                 "date": datetime.strptime("2014-10-01", "%Y-%m-%d"),
#                 "grade": "A",
#                 "score": 11
#             },
#             {
#                 "date": datetime.strptime("2014-01-16", "%Y-%m-%d"),
#                 "grade": "B",
#                 "score": 17
#             }
#         ],
#         "name": "Vella",
#         "restaurant_id": "41704620"
#     }
# )
# print result.inserted_id

#query
cursor = db.restaurants.find({"borough": "Manhattan"})
ret = []
"""
{
u'cuisine': u'Italian', 
u'borough': u'Manhattan', 
u'name': u'Vella', 
u'restaurant_id': u'41704620', 
u'grades': [
    {
        u'date': datetime.datetime(2014, 10, 1, 0, 0), 
        u'grade': u'A', u'score': 11
    }, 
    {
        u'date': datetime.datetime(2014, 1, 16, 0, 0), 
        u'grade': u'B', u'score': 17
    }
], 
u'address': {
    u'building': u'1480', 
    u'street': u'2 Avenue', 
    u'zipcode': u'10075', 
    u'coord': [-73.9557413, 40.7720266]
}, 
u'_id': ObjectId('584d1239678f862910189391')
}
-------------
('ret', 
[
'{
    "cuisine": "Italian", 
    "borough": "Manhattan", 
    "name": "Vella", 
    "restaurant_id": "41704620", 
    "grades": [
        {"date": "2014-10-01 00:00:00", "grade": "A", "score": 11}, 
        {"date": "2014-01-16 00:00:00", "grade": "B", "score": 17}
    ], 
    "address": {
        "building": "1480", 
        "street": "2 Avenue", 
        "zipcode": "10075", 
        "coord": [-73.9557413, 40.7720266]
    }, 
    "_id": "584d1239678f862910189391"
}'
]
)
"""
for document in cursor:
    # del document['_id']
    document['_id'] = str(document['_id'])
    # del document['grades']
    for item in  document['grades']:
        # print ('item:', item)
        item['date'] = datetime.strftime(item['date'],'%Y-%m-%d %H:%M:%S')
    # print(document)
    item = json.dumps(document)
    ret.append(item)

print ('ret', ret)


# cursor = db.restaurants.find({"grades.grade": "B"})
# for document in cursor:
#   print(document)


# Logical AND
# cursor = db.restaurants.find({"cuisine": "Italian", "address.zipcode": "10075"})
# for document in cursor:
#     print(document)

# Logical OR
# cursor = db.restaurants.find(
#     {"$or": [{"cuisine": "Italian"}, {"address.zipcode": "10075"}]})


# for document in cursor:
#     print(document)

# Update Top-Level Fields

# result = db.restaurants.update_one(
#     {"name": "Vella"},
#     {
#         "$set": {
#             "cuisine": "American (New)"
#         },
#         "$currentDate": {"lastModified": True}
#     }
# )
# print result.matched_count
# result = db.restaurants.update_one(
#     {"restaurant_id": "41704620"},
#     {"$set": {"address.street": "East 31st Street"}}
# )
# print result.matched_count

# Remove Data with PyMongo
# result = db.restaurants.delete_many({"borough": "Manhattan"})
# print result.deleted_count
# result = db.restaurants.delete_many({})

# Data Aggregation with PyMongo
# cursor = db.restaurants.aggregate(
#     [
#         {"$group": {"_id": "$borough", "count": {"$sum": 1}}}
#     ]
# )
# for document in cursor:
#     print(document)

# map-reduce
db = client.mp
# result = db.restaurants.insert([
#     {
#         "_id":1,
#         "cust_id":'marong',
#         "status":'A',
#         "items":[{
#             "sku":'mmm',
#             "qty":5,
#             "price":2.5
#         },{
#             "sku":'nnn',
#             "qty":5,
#             "price":2.5
#         }]
#     },
#     {
#         "_id":2,
#         "cust_id":'marong',
#         "status":'B',
#         "items":[{
#             "sku":'mmm',
#             "qty":5,
#             "price":3
#         },{
#             "sku":'nnn',
#             "qty":5,
#             "price":3
#         }]
#     },
# ])
# print result
mapper=Code(
"""
function () {
var key = this.cust_id
var value = 0;
for (var idx = 0; idx < this.items.length; idx++){
   value += this.items[idx].qty * this.items[idx].price;
}
emit(key, value);
}
""")
reducer= Code(
"""
function (key, values) {
return Array.sum(values);
}
""")
# print mapper, reducer
# coursor = db.restaurants.map_reduce(map=mapper, reduce=reducer, out="map_reduce_example")

# print coursor
# for x in coursor.find():
#     print x
# Collection(Database(MongoClient(host=['tplinux.cn:27017'], document_class=dict, tz_aware=False, connect=True), u'mp'), u'map_reduce_example')
# {u'_id': u'marong', u'value': 55.0}


 

 

© 著作权归作者所有

共有 人打赏支持
hyhlinux
粉丝 7
博文 167
码字总数 51777
作品 0
海淀
程序员
大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据
04/17
0
0
MongoDB在Ubuntu10.04下的单机性能测试

MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它比纯noSQL数据库查询功能强悍,比关系数据库更面向集合。 测试的硬...

岭南六少
2011/08/06
0
0
Mongodb python驱动教程

Mongodb python驱动教程 安装 使用python驱动mongodb需要下载、安装PyMongo包 Windows用户,点击这里下载。 使用pip安装 在linux平台使用pip命令安装: 指定版本: 升级: `pip install --u...

youthflies
2014/04/30
0
0
在Ubuntu 12.04中配置分布式爬虫框架——Cola

Cola是一个用Python编写的分布式爬虫框架,其目的是为了方便分布式的部署,目前虽仍有很多不完善的地方,但仍然值得对其进行一番探索。本文将对Cola的运行环境配置进行一番较为详细的介绍。在...

鄂世嘉
2013/07/01
0
0
Python操作MongoDB - 极简教程

Python 连接 MongoDB 安装PyMongo模块 使用MongoClient建立连接 获取数据库 获取集合 上述任何命令都没有在MongoDB服务器上实际执行任何操作。当第一个文档插入集合时才创建集合和数据库。 ...

kangvcar
2017/11/02
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点

前言: 分享 Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点,文章有点长,但比较全面,阅读时间15分钟左右,干货满满。 一、HashMap的那些事 1.1、HashMap的实现原理 1.1.1、...

Java大蜗牛
35分钟前
1
0
nginx模块学习五 expires 浏览器缓存

缓存原理 语法 Syntax: expires [modified] time;expires epoch | max | off;Default: expires off;Context: http,server,location,if in location 例/etc/nginx/conf.d/default.con......

Romanceling
46分钟前
0
0
怎样回答技术面试题?

一、听清题,勿抢答 面试,首先也是一个人与人交流沟通的过程。有些时候,面试官还没说完问题,面试者就会打断说「这个问题我知道...」。打断不利于沟通,同时,这样其实导致面试题没听清。比...

Java小铺
48分钟前
0
0
分布式环境下的并发问题

在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理: 避免并发 时间戳 串行化 数据库 行锁 统一触发途径 避免并发 在...

edwardGe
今天
1
0
Golang可变参数

Go 可变参数 语法 如果一个函数最后一个参数被标记为…T,表示函数可以接受一个可变的参数。 比如,我们想在nums中查找num是否存在: func find(num int, nums …int){} 目的是通过find函...

春哥大魔王的博客
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部