golang Mongo Mgo备忘单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang Mongo Mgo备忘单相关的知识,希望对你有一定的参考价值。

sess := mgoSession()

sess.DB("db").C("collection").
		Find(bson.M{"items": bson.M{"$elemMatch": bson.M{"name": item}}}).
		All(&oL)
sess := mgoSession()

collection := sess.DB("db").C("collection")
collection.Insert(&offer)
func mgoSession() *mgo.Session {
	uri := "127.0.0.1"
	if uri == "" {
		fmt.Println("no connection string provided")
		os.Exit(1)
	}

	sess, err := mgo.Dial(uri)
	if err != nil {
		fmt.Printf("Can't connect to mongo, go error %v\n", err)
		os.Exit(1)
	}
	// defer sess.Close()

	return sess
}

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

【中文标题】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 Mongo Mgo备忘单的主要内容,如果未能解决你的问题,请参考以下文章

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

labix.org/mgo 连接池泄漏问题

哪个库更高效“gopkg.in/mgo.v2”或“go.mongodb.org/mongo-driver/mongo”[关闭]

使用mgo在mongo中删除所有早于使用_id的日期的文档

使用 mgo 存储嵌套结构

使用 Golang mgo 连接到 MongoDB Atlas:Persistent no reachable server to replica set