python对MongoDB的操作

python连接

 try:
        conn = MongoClient(ip, port)
        database = conn[db] #db为数据库名称
        my_set = database[tb]#tb为表名称
        # logger.info("需要检测的字段:{0}".format(field))
        nm_all = my_set.estimated_document_count()#数据库总条数
        all_dates=my_set.find().limit(10)
        return all_dates#返回需要检测的数值,数量,第几条
    except Exception as e:
        logger.error(e)

1:数据库的备份,恢复,资源监控

mongodump -h   127.0.0.1  -d  db   -o  path#将127.0.0.0.1上面的数据库的数据备份到path路径下面
mongorestore  -h  127.0.0.1:27017  -d  db path# 将数据恢复到本地的db数据库中,db如果不存在就自动创建
mongostat

2:删除,创建,重命名

删除数据库
db.dropDatabase()
创建集合
db.createCollection(name)
db.collection.insert({
    
    "":"","":""})
删除集合
db.collection.drop()
集合重命名
db.collection.renameCollection("新名")

3,数据的插入

插入单个文档
db.collection.insert({
    
    "":"","":""})
插入多条
db.collection.insert([{
    
    "":"","":""},{
    
    "":"","":""}])
insertone,插入一条
insertMany插入多条
insert 包含上面两种功能
结果查看
db.collection.find()

4:数据的查找

db.collection.find(query, field)
query为查询语句
field为要展示的域, 0为不显示该域名,1为显示该域名,无参数表示显示所有

查找符合条件的第一条数据
db.collection.findOne()

5:条件操作符

大于 - $gt                   greater than
小于 - $lt                     less than
大于等于 - $gte    
小于等于 - $lte
等于     $eq        equal
不等于 $ne
包含   $in
不包含 $nin
逻辑与  and 逗号隔开,
逻辑或 or
逻辑非 not
既不也不  $nor

5:随机采样抽取数据,需要版本3.2以上。否则会报错。

方式一:
db.tb.aggregate([{
    
    "$sample": {
    
    "size": 1}}])
方式二:
通用性随机采样方式,将checke_number设置为随机数,缺点数据量很大时,这个查询效率很低(应该说任何带有skip查询的数据都非常的慢)
my_set.find().limit(1).skip(check_number - 1)]

6:模糊查询

db.ods_mi_commodity_detail.find({
    "commodity_name":{        
        $regex:"耳机"
    }
    
})

7:查找某张表某个字段是否有重复值

db.getCollection('ods_gs_basic').aggregate([{ '$group': { _id : '$enterprise_name', 'count': {'$sum' : 1 } } },    { $match: { 'count': { '$gt' : 1} } }])
a=my_set.aggregate([{
    
     '$group': {
    
     "_id" : '$enterprise_name', 'count': {
    
    '$sum' : 1 } } }, {
    
    "$match": {
    
     'count': {
    
     '$gt' : 1} } }])
print(a)

猜你喜欢

转载自blog.csdn.net/qq_34237321/article/details/110135733