MongoDB——qmgo进阶使用
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB——qmgo进阶使用相关的知识,希望对你有一定的参考价值。
MongoDB——qmgo进阶使用
1.mongosh的相关指令
mongosh 删除某个字段
db.user.updateOne(
"field":
"$exists": true
,
"$unset":
"field":null
,
multi: true
);
2.常见错误
err cannot transform type *main.User to a BSON Document: struct main.test2 has duplicated key key
注意插入数据时 bson字段不能重复。
upsert func: replacement document cannot contain keys beginning with ‘$’
3.追加数据
给某个字段追加多个数据时,注意不能直接加数组。
使用push + each 迭代数组即可追加多个数据。
4.Update设置option
import (
"context"
"fmt"
"github.com/go-echarts/go-echarts/v2/charts"
"github.com/go-echarts/go-echarts/v2/opts"
"github.com/qiniu/qmgo"
"github.com/qiniu/qmgo/options"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/load"
"github.com/shirou/gopsutil/v3/mem"
"go.mongodb.org/mongo-driver/bson"
options2 "go.mongodb.org/mongo-driver/mongo/options"
"os"
"strconv"
"sync"
"time"
// "github.com/shirou/gopsutil/mem" // to use v2
)
//设置UpdateOption,若不存在则插入数据
myOpts := options2.Update()
myOpts.SetUpsert(true)
Opts := options.UpdateOptionsUpdateHook: bson.M, UpdateOptions: myOpts
//追加数据
err := cli.UpdateOne(*ctx, bson.M"id": 1, bson.M
"$push": bson.M
"cpu": bson.M"$each": m.CpuUse, //追加cpu
"mem": bson.M"$each": m.MemUse, Opts) //追加mem
需要先利用官方的options.Update() 方法创建UpdateOptions实例,然后用qmgo的UpdateOptions创建其实例,因为参数需要UpdateHook 这里创建一个空的。
以上是关于MongoDB——qmgo进阶使用的主要内容,如果未能解决你的问题,请参考以下文章