编辑
2024-07-10
💻数据库
00
请注意,本文编写于 344 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

1. 删除mongo中的重复元素
2. 将mongo字符串转为时间格式
3. mongoEngine的多联表查询
4. mongo以json格式导入到数据库中
5. 使用mongo管道查询数据

1. 删除mongo中的重复元素

mongo
db.ip_info.aggregate([ {'$group':{'_id':'$query','num':{'$sum':1},'dups':{'$addToSet':'$_id'}}}, {'$match':{'num':{'$gte':2}}}, {'$sort':{'_id':1}}, ],{allowDiskUse:true}).forEach(function(doc){ doc.dups.shift(); db.ip_info.remove({'_id':{'$in':doc.dups}}); })

2. 将mongo字符串转为时间格式

mongo
db.domain_page.find().forEach(function(doc){ doc.insert_time = new ISODate(doc.insert_time); db.domain_page.save(doc) })

3. mongoEngine的多联表查询

核心思想:使用MongoEngine操作aggregate+aggregate的Lookup操作。

python
pipeline = [ {"$match": {"name": {"$regex": search}}}, {"$lookup": { "from": "linkman", # 要一起合并的数据库 "localField": "link_id", # Customer中的字段 "foreignField": "_id", # linkman中的字段 "as": "cl_all_data" # 将查询到的表合并成一个list } } ] # 一定要有*号, result = Customer.objects(customer_id=customer_id).aggregate(*pipeline) for i in result: print i

4. mongo以json格式导入到数据库中

mongoexport -h 192.168.10.1 -p 27017 -u aa -p bb -d xx -c cc -0 /home/data/data.json --type json--authenticationDatabase admin

5. 使用mongo管道查询数据

db.集合名字.aggregate([ # 按照相关要求进行匹配 {'$match':{'timestamp':{'$gte':ISODate('2019-02-15 00:00:00Z'),'$lt':ISODate('2019-3-25 00:00:00Z')}}}, # 根据两个字段进行分组 {'$group':{'_id':{'name':'$name','age':'$age'},'num':{'$sum':1}}}, # 在对某一个字段进行合并,计算数量 {'$group':{'_id':'$_id.dst','general_name':{'$push':'$_id.name'},'num': {'$sum':'$num'}}}, # 按照num降序排序 {'$sort':{'num':-1}} ],{'allowDiskUse':true})

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!