这几个好理解,

更好的实现,再说。

package main

import (
	"fmt"
	"log"
	"time"

	"gopkg.in/mgo.v2"
	"gopkg.in/mgo.v2/bson"
)

type Task struct {
	Description string
	Due         time.Time
}

type Category struct {
	Id          bson.ObjectId `bson:"_id,omitempty"`
	Name        string
	Description string
	Tasks       []Task
}

func main() {
	mongoDialInfo := &mgo.DialInfo{
		Addrs:    []string{"localhost"},
		Timeout:  5 * time.Second,
		Database: "taskdb",
		Username: "root",
		Password: "123456",
	}
	session, err := mgo.DialWithInfo(mongoDialInfo)

	if err != nil {
		panic(err)
	}

	defer session.Close()

	session.SetMode(mgo.Monotonic, true)
	c := session.DB("taskdb").C("categories")

	docM := map[string]string{
		"name":        "Open Source",
		"description": "Tasks for open-source projects",
	}
	err = c.Insert(docM)
	if err != nil {
		log.Fatal(err)
	}

	docD := bson.D{
		{"name", "Project"},
		{"description", "Project Tasks"},
	}
	err = c.Insert(docD)
	if err != nil {
		log.Fatal(err)
	}

	doc := Category{
		bson.NewObjectId(),
		"Open-Source",
		"Tasks for open-source projects",
		[]Task{
			Task{"Create project in mgo", time.Date(2015, time.August, 10, 0, 0, 0, 0, time.UTC)},
			Task{"Create REST API", time.Date(2015, time.August, 20, 0, 0, 0, 0, time.UTC)},
		},
	}

	err = c.Insert(&doc)
	if err != nil {
		log.Fatal(err)
	}

	var count int
	count, err = c.Count()
	if err != nil {
		log.Fatal(err)
	} else {
		fmt.Printf("%d records inserted", count)
	}

}

  

最新文章

  1. java 垃圾回收
  2. html5 三角形
  3. hibernate内部测试题(附赠答案)
  4. phpmyadmin #1045 #2002 无法登录 MySQL 服务器的解决方
  5. POJ 1195 2维线段树(树套树实现) 树状数组
  6. SpriteKit所有的类
  7. clear_logs.py修改
  8. sort和qsort排序
  9. ural1772 Ski-Trails for Robots
  10. SpringMVC过程中@RequestBody接收Json的问题 总是报415
  11. 教大家怎样给UITextView加入placeholder扩展
  12. docker挂载NVIDIA显卡运行pytorch
  13. mongodb查询操作分析
  14. MySQL/上
  15. [LeetCode] Candy Crush 糖果消消乐
  16. mysql进阶(二十三)数据库事务四大特性
  17. Scala详解
  18. ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
  19. C# 获取文件图标
  20. linux的systemctl 命令用法 转

热门文章

  1. (全国多校重现赛一) J-Two strings
  2. linux 通过管道更方便的查询输入记录
  3. 第一节知识点:.net与c#的概念
  4. 谈一谈AOP面向切面编程
  5. Python 单线程下实现多个socket并发
  6. php调用新浪API生成t.cn短网址链接
  7. 1、看源码MVC如何实例化控制器?
  8. c++--语言本身
  9. 最近学习了Http连接池
  10. java之不同数据流应用举例