mgo或者mongo-go-driver, 怎么操作ArrayFilters。

题目描述

mongo-go-driver如何操作ArrayFilters实现mongodb两层嵌套数组的修改?

题目来源及自己的思路

手写查询是这样的

db.demo.update(
        {}, 
        {
            $inc: {
                    "panels.$[t].condition.$[val].valueSource": 100001
            }
        }, 
        {
            arrayFilters: [{
                    "t.id": 10000
            }, {
                    "val.valueConnection": "changed"
            }],
            multi: true
    });

mgo没找到ArrayFilters相关字段,mongo-go-driver有相关的字段,但是Filters需要传入一个[]interface,请问Filters应该怎么填?代码如下

res, err := c.UpdateMany(
        ctx,
        bson.M{},
        bson.M{"$inc": bson.M{"content.regs.$[reg].conf.$[con].name": 100001}},
        &options.UpdateOptions{ArrayFilters: &options.ArrayFilters{
            Registry: bson.DefaultRegistry,
            Filters:  这里怎么填?,
        }})
阅读 3.9k
1 个回答

我魔改了一下,可以用了 https://github.com/laoluan/mgo

err:= mon.Session.DB("dev").C("template").UpdateUseAf(
        bson.M{"name":"测试模板"},
        bson.M{"$set": bson.M{"content.regs.$[reg].conf.$[con].name": "逻辑控制模式"}},
        []bson.M{
            {"reg.name": "继电器1"},
            {"con.name": "控制模式"},
        })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进