![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mongodb
生有涯,知无涯
登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。
展开
-
MongoDB–查找数组字段长度大于等于N的所有文档
1.需求mongodb查询过滤出某个数组字段元素个数(即长度) >= N的所有文档,或者查询长度=N的所有文档例如有如下格式的文档,collection:defect_product_data {"barcode" : "028201693002026300269101111000000000", "status" : "judg_audited", "judge_info" : [ { "judge_result" : "conc原创 2021-01-20 15:54:01 · 4511 阅读 · 0 评论 -
mongo聚合分组$group实现生成工厂树状组织结构
1.需求有设备基础数据表如下,包含车间工厂、车间、生产单元、子生产单元(本次树状结构忽略这一层次)、设备五个层次,现在需要根据工厂、车间、生产单元、设备四个层次生成工厂树状结构。2.思路先按工厂、车间、生产单元分组,并将设备信息push到一个数组device_info保存再对上一步的结果按车工厂、车间分组,并将生产单元信息及生产单元下的设备信息push到数组production_cell保存再对上一步的结果按工厂分组,并将车间及车间下的生产单元及生产单元下的设备push到数组workshop_i原创 2021-01-12 14:48:40 · 393 阅读 · 0 评论 -
mongo聚合操作符$unwind
1.原始数据2.需求1.按条件获取所有停机原因及对应的停机时长数据2.按条件获取指定停机类型下的停机原因及停机时长3.操作3.1 获取所有停机原因及时长db.stop_reason_duration_daily_data.aggregate([ {'$match': {"timestamp": {"$gte": ISODate("2020-10-01T00:00:00.000+0000"), "$lt": ISODate("2020-12-24T00:00:00.原创 2020-12-25 16:11:29 · 2901 阅读 · 0 评论 -
mongo聚合操作符: $split/$arrayElemAt/$addFields/$strLenCP/$subtract/$substr/$toInt/$push/$arrayToObject
1.原始数据2. 需求3.思路首先考虑需要拆分code,分成三个字段device_code(设备编码),kpi_code(指标code), shift(班次)再根据以上三个字段分组,再每个设备,当天当班次的指标到一个字典里。4.操作db.datas.aggregate([ { '$match': {'code': {'$in': ['dev_plc_LS_01_001~zb_r_cl_bc1', 'dev_plc_LS_01_001~zb_r_原创 2020-12-25 15:40:08 · 1998 阅读 · 0 评论 -
mongo聚合操作符$arrayToObject:将数组转换为单个文档
1.需求有如下表,获取指定设备当前的状态。需要得到结果如下:{“dev_status_dict” : {“device_5ls4_1_3” : 2,“device_5ls4_1_4” : 6,“device_5ls4_1_5” : 2,“device_5ls4_1_6” : 2}}2.解决方案:mongo聚合,将device_code和status_code放到数组,最后将数组转化为dictdb.device_status.aggregate([{"$match": {"end_原创 2020-11-30 16:11:37 · 2103 阅读 · 0 评论 -
mongo聚合操作符$reduce:对数组字段进行组合去重等操作
1.需求:有如下数据,需要将数据按照设备进行分组,然后将某个数组字段的结果进行组合去重,形成一个新的数据字段。得到结果如:解决方案:mongo聚合,先按设备分组,再对目标字段进行$reducedb.device_analysis.aggregate([ { '$match': {'时间': {'$gte':'2020年07月16日', '$lte':'2020年11月24日'}} }, { '$group': {'_id': '$设备编码',原创 2020-11-28 10:20:15 · 3034 阅读 · 4 评论 -
mongodb删除重复数据保留一条
1.问题引入标红字段可能存在重复数据,需删除重复数据保留一条2. 聚合操作db.defect_product_data.aggregate([ { $group: { _id: {barcode: '$barcode', device_code: '$device_code', produce_process: '$produce_process', produce_user: '$produce_user',produce_shift: '$produce_shift'},原创 2020-09-24 11:18:48 · 2653 阅读 · 3 评论 -
Python使用MongoDB-GridFS进行文档管理
问题引入:mongodb如何存取图片及等其他非文档型文件,或者说大于16M的文件。例如pdf文件,大图片文件等。解决方案MongoDB内置一套文件系统名为GridFS(Grid File System),我们可以使用它来存储大于16M的文件。GridFS具有分布式管理文件的能力,可以突破一般文件系统对file的限制,分段存储,不像普通文件系统是整个存储的。这样读取大型文件时就不会占用大量的内存。GridFS会将文件存储在两个Document里:1.Chunks用来存储二进制数据2.Files用原创 2020-08-03 16:08:06 · 2122 阅读 · 1 评论 -
mongodb查询索引、创建哈希索引、删除哈希索引
1.获取索引信息db.auto_arrange_data.getIndexes();2.对code字段创建hash索引db.auto_arrange_data.ensureIndex({'code':'hashed'});3.删除指定字段建立的索引db.auto_arrange_data.dropIndex('code_hashed')原创 2020-07-27 15:32:19 · 1140 阅读 · 0 评论 -
pymongo批量操作工具封装——mongodb数据大批量操作
class BulkHandler(): """ bulk操作是基于pymongo语法,目前mongoengine语法不支持bulk操作 所以传入到bulk操作内的数据必须依赖于pymongo的基本语法,基本语法和mongodb的shell语法保持一致 bulk操作的结果处理,可以在该类中处理,也可以在类外处理,这里暂不处理,后期有需求的时候再加 """...原创 2020-01-09 18:59:24 · 661 阅读 · 0 评论 -
Django操作mongoDB Mongoengine之——信号
1.安装blinker库MongoEngine在进行数据操作时会发出一些信号,我们可以连接这些信号进行一些额外的操作。注意:要在MongoEngine中使用信号,需要安装 blinker 这个库。$ pip install blinkerMongoEngine提供的信号如下:pre_init: 在创建一个新的 Document 或者 EmbeddedDocument 实例对象之后,并且...原创 2019-12-31 23:14:07 · 609 阅读 · 2 评论 -
python使用ODM控制Mongodb(MongoEngine)
1.安装pip install mongoengine2.连接数据库要连接一个 mongod实例, 需要用到 connect() 函数。分不同情况需提供不同的连接参数。2.1 默认情况,指mongod运行在localhost且端口为27017)只需要提供需要连接的数据库名即可:from mongoengine import connectconnect('project1')...原创 2019-09-01 13:41:04 · 2522 阅读 · 0 评论 -
Mongodb的介绍、安装和启动
1. mongodb的介绍1.1 什么是mongodbmongodb 是一个功能最丰富的NoSQL非关系数据库。由 C++ 语言编写。mongodb 本身提供S端存储数据,即server;也提供C端操作处理(如查询等)数据,即client。1.2 SQL和NoSQL的主要区别在SQL中层级关系: 数据库>表>数据而在NoSQL中则是: 数据库>集合>文档1...原创 2019-07-21 15:00:50 · 144 阅读 · 0 评论