下面的代码我已经执行从Milvus集合中删除记录。没有错误,但相应的记录也没有删除。
请推荐解决方案
from pymilvus import connections,Collection,db,utility,FieldSchema, CollectionSchema
def connectVectorDB(**conStrings):
try:
milvusDB = connections.connect(
#db_name=conStrings['dbName'],
host=conStrings['hostname'],
port=conStrings['port']
)
db.using_database(conStrings['dbName'])
return milvusDB
except Exception as err:
raise err
dbConnections = connectVectorDB(dbName='default',hostname="localhost",port='19530')
myCol = Collection('DocStrings')
expression = "docID == 445341931317291845"
myCol.delete(expr=expression)
myCol.flush()
字符串
1条答案
按热度按时间bttbmeg01#
先问几个问题:
docId
是否定义为集合中的主键?同样在上面的例子中,你使用了
==
,这在2.3.2之前是不允许的。Before version 2.3.2:
Milvus只支持删除具有明确指定的主键的实体,这可以仅通过术语表达式
in
来实现。也就是说,可以使用像
expr = "book_id in [0,1]"
这样的布尔表达式,其中book_id
被定义为主键。从2.3.2开始,不仅可以通过主键删除实体,还可以使用复杂的布尔表达式:
Milvus支持通过主键或复杂布尔表达式删除实体。通过主键删除实体比通过复杂布尔表达式删除实体快得多,也更轻。这是因为Milvus在通过复杂布尔表达式删除数据时首先执行查询。
值得一提的是:
Strong
,则删除后仍可以立即检索已删除的实体。参见:https://milvus.io/docs/delete_data.md