Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ikasoba/pigimongo-db
仲間内でネタにするために作ったドキュメント指向のDB
https://github.com/ikasoba/pigimongo-db
Last synced: 15 days ago
JSON representation
仲間内でネタにするために作ったドキュメント指向のDB
- Host: GitHub
- URL: https://github.com/ikasoba/pigimongo-db
- Owner: ikasoba
- Created: 2023-10-26T09:51:01.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-14T10:29:02.000Z (9 months ago)
- Last Synced: 2024-10-24T06:06:52.918Z (2 months ago)
- Language: Go
- Homepage:
- Size: 18.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# ピギモンゴDB
仲間内でネタにするために作ったドキュメント指向のDB
# 使い方
## データベース初期化
```go
import (
pigimongo "github.com/ikasoba/pigimongo-db/core"
)db, err := pigimongo.NewDatabase(":memory:")
if err != nil {
panic(err)
}
````NewDatabase`の第一引数は`":memory:"`または、任意のファイル名が使用できます。
## 書き込み
```go
type Hoge struct {
Content string
}err := db.Add(Hoge{ "ふが" })
if err != nil {
panic(err)
}
```## 読み取り
```go
type Hoge struct {
Content string
}hoge := &Hoge{}
err := db.Find(hoge, `Content = "ふが"`)
if err != nil {
panic(err)
}// プレースホルダーも使えます
hoge = &Hoge{}
err = db.Find(hoge, `Content == ?`, "ふが")
if err != nil {
panic(err)
}
```## 更新
```go
type Hoge struct {
Content string
}err := db.Update(Hoge{ "ぴよ" }, `Content == "ふが"`)
if err != nil {
panic(err)
}// プレースホルダーも使えます
err = db.Update(Hoge{ "ぴよ" }, `Content == ?`, "ふが")
if err != nil {
panic(err)
}
```## 削除
```go
err := db.Remove(`Content == "ぴよ"`)
if err != nil {
panic(err)
}// プレースホルダーも使えます
err = db.Remove(`Content == ?`, "ふが")
if err != nil {
panic(err)
}
```# クエリ
## クエリで書ける値
- 文字列 `"hoge"` `"hoge\nfuga"`
- 数値 `1234` `12.34`## クエリで使える演算子
- `and`
- `or`
- `==`
- `!=`
- `<`
- `>`
- `<=`
- `>=`# テクニック
## ドキュメントには一意のIDが付けられる
```go
type Hoge struct {
// 内部で自動的に `Id_` というキー名でxidで生成されたidが付与される
Id_ string
Content string
}err := db.Add(Hoge{ Content: "ぴよ" })
if err != nil {
panic(err)
}hoge := &Hoge{}
err = db.Find(hoge, `Content = "ぴよ"`)
if err != nil {
panic(err)
}log.Println(hoge.Id_) // ckt3oe822smmhr7c40eg
```