使用deletemany清空MongoDB(通过Azure Cosmos Db)共享集合

时间:2019-03-05 14:33:06

标签: node.js mongodb azure-cosmosdb

我目前正在通过Microsoft AzureCosmosDB使用MongoDB处理数据的NodeJS项目。

为了很好地利用该项目,我有一个共享集合(以_id作为分键),我想定期清空它,我知道这是通过使用带有空对象作为参数的“ deleteMany”指令完成的。

所以我尝试了,并且目前正面临一个反复出现的错误:

query in command must target a single shard key

我了解此错误背后的逻辑,但我不知道从哪里开始寻找解决方案,并且在mongo文档中找不到任何帮助。

我已经读过有关使用散列分片键的信息,以及如何使分片键的使用更加“灵活”,但我想知道是否有更简单的解决方案,也许我想念的东西会让我清空收集而没有一一列出所有商品ID:)

有什么想法吗?

非常感谢您!

2 个答案:

答案 0 :(得分:1)

SO

目前看来这是不可能的,Azure CosmosDb团队正在对此进行研究,并计划在今年的头几个月(2019年)发布版本。

https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/34813063-cosmosdb-mongo-api-delete-many-with-partition-ke

感谢您的帮助,也很抱歉

答案 1 :(得分:0)

您应该能够通过匹配集合中具有_id字段的任何文档来进行查询或删除命令:

db.collection.deleteMany({ _id: { $exists: true }})