Python pyMongo删除/修改找到的文档
编写一个查找文档的函数,如果“delete==True”,则删除它们 是否有办法删除“.find”操作产生的文档Python pyMongo删除/修改找到的文档,python,mongodb,pymongo,Python,Mongodb,Pymongo,编写一个查找文档的函数,如果“delete==True”,则删除它们 是否有办法删除“.find”操作产生的文档 def findOrphanSensors(self, delete = False): deviceList = sorted(self._dbC.devicesCol.find({}).distinct('_id')) print(deviceList) orphanSensors = self._dbC.sensorsCol.f
def findOrphanSensors(self, delete = False):
deviceList = sorted(self._dbC.devicesCol.find({}).distinct('_id'))
print(deviceList)
orphanSensors = self._dbC.sensorsCol.find({'parentDeviceID':{'$nin':deviceList}})
print(orphanSensors.count())
if delete == True:
orphanSensors.remove() ???
我可以做到:
if delete == True:
self._dbC.sensorsCol.deleteMany({'parentDeviceID': {'$nin': deviceList}})
但是我认为如果我已经在“孤儿传感器”中有了搜索结果,那么就没有必要重新进行搜索…?是的,你可以。
查找的结果可以迭代
孤立传感器中孤立传感器的:
self._dbC.sensorsCol.deleteOne(孤立[''id'])
但是,这可能不如调用delete\u many()
有效。如果在删除孤立项之前不需要打印它们的数量,则可以按如下方式重新排列代码:
def findOrphanSensors(self,delete=False):
deviceList=已排序(self.\u dbC.devicesCol.distinct(“\u id”))
打印(设备列表)
孤立过滤器={'parentDeviceID':{'nin':设备列表}
如果删除:
结果=self.\u dbC.sensorsCol.delete\u many(孤立过滤器)
打印(结果已删除\u计数)
其他:
结果=self.\u dbC.sensorsCol.find(孤立过滤器)
打印(result.count())