“路径中找到太多位置(即'$')元素的解决方案是什么?”

时间:2017-12-29 12:36:54

标签: mongodb go mgo

我已经在网上搜索了这个问题,我得出的结论是,最新版本的mongo中的一个错误告诉herehere

问题是对象的结构如下:

{
"_id": 2,
"status": 0,
"details": [{
    "id": 2,
    "category": "A",
    "obj": {
        "apple": 5,
        "banana": 2,
        "cherry": 10
    },
    "members": [{
            "id": 3,
            "category": "A",
            "obj": {
                "apple": 5,
                "banana": 2,
                "cherry": 10
            }
        },
        {
            "id": 4,
            "category": "A",
            "obj": {
                "apple": 5,
                "banana": 2,
                "cherry": 10
            }
        }
    ]
  }]
}

我在我的项目中随处可用,几乎准备就绪。但现在要求更新obj对象内的members。为此我试过

cond  := bson.M{ "$and": []bson.M{ bson.M{"details":bson.M{ "$elemMatch": bson.M{ "category": "A"} } }, bson.M{"status":0} } }
query := bson.M{ "$set": bson.M{ "details.$.members.$.obj.guava":15 } }
_, err := models.DbUpdateAll(Collection, cond, query)

但它不起作用。我是否需要通过将数组保存在不同的集合中并传递对此对象的引用来更改文档的整个结构?现在项目所处的位置真的是一个坏主意......难道没有任何简单的解决方案吗?

0 个答案:

没有答案