Golang mongodb 从集合中删除所有项目 [mgo.v2]

Posted

技术标签:

【中文标题】Golang mongodb 从集合中删除所有项目 [mgo.v2]【英文标题】:Golang mongodb remove all items from collection [mgo.v2] 【发布时间】:2015-02-28 19:09:11 【问题描述】:

如何使用 GO lang 从存储在 mongodb 中的集合中删除所有项目?

在 mongo 控制台中我可以使用:

db.mycollection.remove()

其中空括号 表示所有文档模式。

在 GO lang 中(我使用“gopkg.in/mgo.v2”和“gopkg.in/mgo.v2/bson”)有一些方法:

sess.DB("mydb").C("mycollection").Remove(...)
or
sess.DB("mydb").C("mycollection").RemoveAll(...)

但是它们都需要实现选择器的参数。例如选择器可以是一个 bson 映射

bson.M"id": id

但我想删除所有元素,而不是特定元素。

【问题讨论】:

【参考方案1】:

查看 MongoDB 文档: http://docs.mongodb.org/manual/tutorial/remove-documents/

要删除给定集合的所有文档,只需使用空选择器调用 RemoveAll。只需将 nil 作为参数传递就可以正常工作:

sess.DB("mydb").C("mycollection").RemoveAll(nil)

请务必检查返回的对象。

【讨论】:

谢谢,解决了这个问题。我不认为 N​​il 可以实现选择器;)【参考方案2】:

根据@DidierSpezia 回复使用C("mycollection").RemoveAll。然而,由于JSON specification 区分“空对象” 和“null”,您可能应该使用空的map[string]interfacebson.M

sess.DB("mydb").C("mycollection").RemoveAll(bson.M)

【讨论】:

我相信mgo已经为你做了这件事。至少,它可以用于其他方法,例如 Find。

以上是关于Golang mongodb 从集合中删除所有项目 [mgo.v2]的主要内容,如果未能解决你的问题,请参考以下文章

使用匹配的查询从每个集合中删除所有文档

使用匹配的查询从每个集合中删除所有文档

从 GoLang 中的 mongodb 获取最后插入的元素

从 GoLang 中的 mongodb 获取最后插入的元素

如何从 MongoDB 文档中完全删除字段?

删除集合中所有重复的记录 - MongoDB