MongoDB存储

1、链接MongoDB

       指定数据库

       指定集合

import pymongo

## 连接数据库
client = pymongo.MongoClient(host='localhost', port=27017)
## 指定数据库 kuluma
db = client.kuluma
## 指定集合
collection = db.mycol

  

2、数据库操作

①插入数据

## 插入数据
## insert_one 插入一条数据
student = {
'id':'190720157',
'name':'Amy',
'age':23,
'gender':'female'
}
result = collection.insert_one(student)
print(result) ## 返回 InsertOneResult 对象
print(result.inserted_id) ## 获取 MonggoDB 自动添加的标识符 _id :5ea5340ef3cd203fa1577e4e ## insert_many 插入多条数据
student1 = {
'id':'190720158',
'name':'Lily',
'age':18,
'gender':'female'
}
student2 = {
'id':'190720159',
'name':'Mark',
'age':20,
'gender':'male'
}
results = collection.insert_many([student1,student2])
print(results)
print(results.inserted_ids)

  

②查询

  ※find()得到一个生成器对象,需要循环遍历

## 查询多条数据
results = collection.find({'age':20})
for r in results:
print(r)

  

   ※find_one()得到单个结果,字典类型

## 查询 一条数据
result = collection.find_one({'name':'Amy'})
print(type(result)) ## <class 'dict'> 返回结果时字典类型
print(result)

  

  ※比较查询

## 查询年龄大于等于20的数据
result1 = collection.find({'age':{'$gte':20}})
for r in result1:
print(r)

  ※正则匹配

## 正则匹配查询
##查询以 M 开头的学生
result2 = collection.find({'name':{'$regex':'^M.*'}})
for r in result2:
print(r)

③计数

## 计数
count = collection.find().count()
print(count)

  

④排序

## 排序
s_sort = collection.find().sort('age',pymongo.ASCENDING)
print([s for s in s_sort]) ## 升序
j_sort = collection.find().sort('age',pymongo.DESCENDING)
print([j for j in j_sort]) ## 降序

  

⑤偏移

数据量过大,不建议使用偏移,可以对id_进行条件查询

## 偏移 跳过前两个查询结果,得到第三个以后的数据
skip = collection.find().sort('age',pymongo.ASCENDING).skip(2)
print([s['name'] for s in skip])
## limit(1) 限制只返回一个结果
limit= collection.find().sort('age',pymongo.ASCENDING).skip(2).limit(1)
print([l['name'] for l in limit])

  

【BOOK】数据存储--MongoDB的更多相关文章

  1. 大数据存储:MongoDB实战指南——常见问题解答

    锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...

  2. 数据存储 mongodb

    数据存储 mongodb from pymongo import MongoClient import os base_dir = os.getcwd() class MongoPipeline(ob ...

  3. 【18】如何把数据存储到MongoDB数据库

    如何把数据存储到MongoDB数据库 时间:2018.10.31                   edit by :北鼻 一.mongoDB环境安装 需要使用mongoDB数据库的话需要安装环境, ...

  4. 04 爬虫数据存储之Mongodb

    MongoDB 认识MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...

  5. Python爬虫框架Scrapy实例(三)数据存储到MongoDB

    Python爬虫框架Scrapy实例(三)数据存储到MongoDB任务目标:爬取豆瓣电影top250,将数据存储到MongoDB中. items.py文件复制代码# -*- coding: utf-8 ...

  6. Spring Boot 揭秘与实战(二) 数据存储篇 - MongoDB

    文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用mongoTemplate操作4. 总结 3.1. 实体对象 3 ...

  7. scrapy抓取拉勾网职位信息(七)——数据存储(MongoDB,Mysql,本地CSV)

    上一篇完成了随机UA和随机代理的设置,让爬虫能更稳定的运行,本篇将爬取好的数据进行存储,包括本地文件,关系型数据库(以Mysql为例),非关系型数据库(以MongoDB为例). 实际上我们在编写爬虫r ...

  8. 第十二节:Web爬虫之MongoDB数据库安装与数据存储

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  9. python3下scrapy爬虫(第十一卷:scrapy数据存储进mongodb)

    说起python爬虫数据存储就不得不说到mongodb,现在我们来试一下scrapy操作mongodb 首先开启mongodb mongod --dbpath=D:\mongodb\db 开启服务后就 ...

  10. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

随机推荐

  1. python自动发布-优化版本

    import sys import time import os import paramiko from pygments.lexers import shell baseconfig = { &q ...

  2. 记录一个排查oom思路

    一.背景 客户反馈系统白屏,同时运维反馈内存占用多.项目包括数据库等,是部署在不同docker里的 二.查linux日志是linux将mysql杀掉了 egrep -i -r 'killed proc ...

  3. 【unity萌新第一步】Unity的Hello World(适合小白)

    Unity萌新的第一步:使用unity写第一个Hello World IT界有个笑话:"我擅长用各种语言写Hello World".我讲这个笑话的目的是,指出:写一个HelloWo ...

  4. Linux07-常用命令-权限

    1.组 1.1基本说明 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. 1) 文件所有者 谁创建的这个文件,文件的所有者就是谁 2) 文 ...

  5. P22_条件渲染

    条件渲染 wx:if 在小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块: 也可以用 wx:elif 和 wx:else 来添加 else 判 ...

  6. python爬虫学习——元组,字典(2.14日博客补)

    元组 ''' tup1 = () #创建一个空的元组 print(type(tup1)) #tup2 = (50) #不是元组,python把括号当成了表达式的一部分,即数学运算的括号 #tup2 = ...

  7. BAL数据集详解

    详细格式:https://grail.cs.washington.edu/projects/bal/ Bundle Adjustment in the Large Recent work in Str ...

  8. P3804 【模板】后缀自动机 (SAM) && P6139 【模板】广义后缀自动机(广义 SAM)

    普通 \(\text{SAM Code}\) #include <cstdio> #include <iostream> #include <cstring> #d ...

  9. 操作系统复习(updating)

    操作系统复习(updating) 1.进程和线程的区别是什么? 1)调度:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位 2)拥有资源:不论是传统操作系统还是设有线程的操作系 ...

  10. Cesium渲染模块之概述

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...