mongodb数据库操作 python+命令行

 

一、python操作

from bson.objectid import ObjectId

import pymongo
client1 = pymongo.MongoClient(host='localhost', port=27017)

from pymongo import MongoClient
client2 = MongoClient('mongodb://localhost:27017/')

'''
两种方式都行
'''

'''
指定数据库
'''
db = client1.test
db2 = client1['test']



'''
指定集合
'''
collection = db.students
collection2 = db['students']

'''
指定要插入的数据
'''
student = {
    'id': '20170101',
    'name': 'Jordan',
    'age': 20,
    'gender': 'male'
}
student2 = {
    'id': '20170202',
    'name': 'Mike',
    'age': 21,
    'gender': 'male'
}


'''
保存(可以插入多条)   结果返回id集合
'''
result = collection.insert(student)
print(result)

result = collection.insert([student, student2])
print(result)
#=====================================================官方推荐=====================================
result = collection.insert_one(student)
print(result)
print(result.inserted_id)

result = collection.insert_many([student, student2])
print(result)
print(result.inserted_ids)


'''
================================================================查询===============================
'''
#单条查询
result = collection.find_one({'name': 'Mike'})
print(type(result))
print(result)



#根据id查询
result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
print(result)
#多条查询
results = collection.find({'age': 20})
print(results)
for result in results:
    print(result)
#查询年龄大于20
results = collection.find({'age': {'$gt': 20}})

# $lt  小于
#
# $gt  大于
#
# $lte  小于等于
#
# $gte  大于等于
#
# $ne   不等于
#
# $in  在范围内
#
# $nin  不在范围内

#利用正则

#查询以m开头的
results1 = collection.find({'name': {'$regex': '^M.*'}})

# 符号  含义  示例  示例含义
#
# $regex  匹配正则表达式  {'name': {'$regex': '^M.*'}}  name以M开头
#
# $exists  属性是否存在  {'name': {'$exists': True}}  name属性存在
#
# $type  类型判断  {'age': {'$type': 'int'}}  age的类型为int
#
# $mod   数字模操作  {'age': {'$mod': [5, 0]}}  年龄模5余0
#
# $text  文本查询  {'$text': {'$search': 'Mike'}}  text类型的属性中包含Mike字符串
#
# $where  高级条件查询  {'$where': 'obj.fans_count == obj.follows_count'}  自身粉丝数等于关注数
'''
===========================================================统计==================================
'''
count = collection.find().count()
print(count)
# 或者统计符合某个条件的数据:

count = collection.find({'age': 20}).count()
print(count)


'''
===========================================================排序==================================
升序   pymongo.ASCENDING
降序   pymongo.DESCENDING
'''
results11 = collection.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])

#跳过两个 取两个
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
print([result['name'] for result in results])


'''
===========================================================修改==================================
'''

condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 25
result = collection.update(condition, student)
print(result)


#推荐
condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 26
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count)
#返回结果----匹配的数据条数和影响的数据条数

condition = {'age': {'$gt': 20}}
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

condition = {'age': {'$gt': 20}}
result = collection.update_many(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

'''
===========================================================删除==================================
'''

result = collection.remove({'name': 'Kevin'})
print(result)

#推荐
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)

二、命令行

# 命令操作
'''
1、显示当前数据库服务上的数据库


show dbs;


2、切换到指定的数据库进行操作


use mydb


3、显示当前数据库的所有集合(collections)


show collections;


4、查看数据库服务的状态


db.serverStatus();


5、查询指定数据库的统计信息


use admin


db.stat()


6、查询指定数据库包含的集合名称列表


use test1


db.getCollectionNames()


7、统计集合记录数


db.test1.count()


8、统计指定条件的记录数


db.test1.find({"name":"yunweicai"}).count()


9、查询指定数据库的集合当前可用的存储空间


db.test1.storageSize()


10、查询指定数据库的集合分配的存储空间


db.test1.totalSize()

1、创建数据库


不需要什么create database的命令,只要使用use命令就可以创建数据库


use test1


2、删除数据库


use test1


db.dropDatabase()


3、创建集合


可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合


也可以直接插入一个数据库就直接创建了


db.test1.insert({"name":"mongodb","user":"opcai"})


4、删除集合


db.test1.drop()


5、插入记录


db.test1.save({"name":"yunweicai"})


或者


db.test1.insert({"name":"mongodb","user":"opcai"})


6、查询记录


db.test1.find()


find()里面可以指定多个条件进行查询,如果为空,就查询所有的数据


7、删除记录


db.test1.remove({"name":"yunweicai"})


需要指定一个条件,没有条件是不允许删除操作的。
'''

参考:

https://www.cnblogs.com/aademeng/articles/9779271.html

https://baijiahao.baidu.com/s?id=1612042780837847633&wfr=spider&for=pc

原文地址:https://www.cnblogs.com/51python/p/10886835.html