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进阶使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Go 驱动程序或 mgo/qmgo 在 MongoDB 中存储地理空间数据?

解决qmgo中each数组传参问题

MongoDB进阶

MongoDB 进阶(GridFS)

mongodb进阶一之高级查询

进阶-MongoDB 知识梳理