mongodb常用命令

记录一下最近用到的命令或方法

一。查询重复值

#可以显示重复字段名和重复几次
db.集合名.aggregate({
$group:{
'_id':{'查询重复字段名','$查询重复字段名'},
'uniquedIds':{$addToSet:'$_id'},
'count':{$sum:1}
},{$math:{
'count':{$gt:1}}
})

二。python根据excel更新mongodb的值(需要用admin账号不然会出现权限问题,需要离线导入pyhon包点击一下连接

import pymongo
import xlrd

myclient = pymongo.MongoClient("mongodb://admin:password@ip:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["PointDevice"]
# for x in mycol.find():
#     print(x)
#读取excel
book = xlrd.open_workbook('严管.xlsx')
sheet1 = book.sheets()[0]
nrows = sheet1.nrows

print('表格总行数',nrows)

# ncols = sheet1.ncols
# print('表格总列数',ncols)
#
#row3_values = sheet1.row_values(2)
#print('第3行值',row3_values)

col3_values = sheet1.col_values(2)
print('第3列值',col3_values)
# 遍历
for i in range(nrows-1):
    i = i + 1
    #print(sheet1.row_values(i))
    #点位名
    cell_i_1 = sheet1.cell(i, 1).value
    #路口编号
    cell_i_3 = sheet1.cell(i, 3).value
    #道路编号
    cell_i_4 = sheet1.cell(i, 4).value
    #l路段 编号
    cell_i_5 = sheet1.cell(i, 5).value
    #点位名
    myquery = {"channelName": cell_i_1}
    #查询路口编号是否为空
    cross_t = mycol.find_one({"cross": cell_i_3})
    if cross_t is None:
        #修改为严管和其他编号
        newvalues= {"$set": {"isControl": "1", "cross": cell_i_3, "road": cell_i_4, "block": cell_i_5}}
        # 更新
        mycol.update_one(myquery, newvalues)
        print("修改点位:"+cell_i_1+":改为严管和补充编号")
    else:
        #修改为严管
        newvalues = {"$set": {"isControl": "1"}}
        # 更新
        mycol.update_one(myquery, newvalues)
        print("修改点位:"+cell_i_1+":改为为严管无需补编号")
分享你的喜爱