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)
请务必检查返回的对象。
【讨论】:
谢谢,解决了这个问题。我不认为 Nil 可以实现选择器;)【参考方案2】:根据@DidierSpezia 回复使用C("mycollection").RemoveAll
。然而,由于JSON specification 区分“空对象” 和“null”,您可能应该使用空的
map[string]interface
或bson.M
。
sess.DB("mydb").C("mycollection").RemoveAll(bson.M)
【讨论】:
我相信mgo已经为你做了这件事。至少,它可以用于其他方法,例如 Find。以上是关于Golang mongodb 从集合中删除所有项目 [mgo.v2]的主要内容,如果未能解决你的问题,请参考以下文章