package src
import (
"context"
"fmt"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
// Wendang 测试修改数组元素,添加数组元素,删除数组元素
type Wendang struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Name string `bson:"name,omitempty"`
Shuzu []string `bson:"shuzu,omitempty"`
}
//Shanchu 删除数组
func Shanchu(c *gin.Context) {
collection := Lianjie("wendang")
id, _ := primitive.ObjectIDFromHex("5f55a851b4a4625d9c8051b7")
filter := bson.M{"_id": id}
// filter := bson.M{"name": "x2"}
update := bson.M{"$pull": bson.M{"shuzu": "tt"}} //删除数组元素
// update := bson.M{"$push": bson.M{"shuzu": "tt"}} //添加数组元素
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
updateResult, err := collection.UpdateOne(ctx, filter, update)
if err != nil {
log.Println(err)
}
c.JSON(http.StatusOK, gin.H{"value": updateResult.ModifiedCount})
}
// Inserttest 添加数组
func Inserttest(c *gin.Context) {
sz := []string{"qq", "ee", "tt"}
wend := Wendang{
ID: primitive.NewObjectID(),
Name: "x",
Shuzu: sz,
}
collection := Lianjie("wendang")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
res, err := collection.InsertOne(ctx, wend)
if err != nil {
log.Println(err)
}
id := res.InsertedID
fmt.Println("---------------")
fmt.Println(id)
c.JSON(http.StatusOK, gin.H{"value": id})
}
// Test1 修改数组
func Test1(c *gin.Context) {
coll := Lianjie("wendang")
filter := bson.M{"name": "aaa", "shuzu": "test2"}
update := bson.M{"shuzu.$[item]": "test23"}
arrayFilter := bson.M{"item": "test2"}
// coll 是 mongo 的 Collection,下面内容不需要修改。
res := coll.FindOneAndUpdate(context.Background(),
filter,
bson.M{"$set": update},
options.FindOneAndUpdate().SetArrayFilters(
options.ArrayFilters{
Filters: []interface{}{
arrayFilter,
},
},
))
if res.Err() != nil {
// log error
log.Println(res.Err())
}
log.Println(res.Err())
c.JSON(http.StatusOK, gin.H{"value": "finsh"})
}
go-mongo-driver测试修改数组元素,添加数组元素,删除数组元素
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...