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)