当前位置: 首页 > 知识库问答 >
问题:

从嵌套数组golang mongodb中删除元素

龚远
2023-03-14

我的mongo数据库中有:

{
"_id" : ObjectId("585a60b45ba19c3eb2016a16"),
"userid" : ObjectId("585a60715ba19c3eb2016a14"),
"apps" : [
    {
        "name" : "Apptest",
        "packagename" : "com.test.ezfez",
        "iconurl" : "an_url",
        "visited" : 0,
        "category" : "category",
        "_id" : ObjectId("585a61405ba19c3eb2016a17")
    },
    {
        "name" : "test",
        "packagename" : "test.packagename",
        "iconurl" : "url",
        "visited" : 0,
        "category" : "",
        "_id" : ObjectId("588755025ba19c6f870282d7")
    }, ...

我想从这个数组中删除on元素。我用的是golang和mgo。v2驱动程序,下面是我的代码:

selector := bson.M{"userid": bson.ObjectIdHex("585a60715ba19c3eb2016a14")}
    update := bson.M{"$pull": bson.M{"apps": bson.ObjectIdHex("585a61405ba19c3eb2016a17")}}
    if err := uc.session.DB("API").C("aioapps").Update(selector, update); err != nil {
        fmt.Println(err)
        SendError(w, "Remove", "Error on delete app")
    } else {
        SendSuccess(w, "Remove", "Success")
    }

它继续成功,但不删除项目时,我检查mongob。有人能告诉我我做错了什么吗?谢谢你们

共有1个答案

南宫海超
2023-03-14

也许你需要在apps对象中指定字段名,就像

更新:=bson。M{“$pull”:bson.M{“apps”:bson.M{“\u id”:bson.ObjectIdHex(“585a61405ba19c3eb2016a17”)}}

 类似资料:
  • 问题内容: 我想从我的redux状态中删除一个元素。我使用无缝不可变及其API对状态进行操作。但是我找不到在嵌套状态时删除元素的任何好方法。 所以我要删除的元素是: 谢谢! 问题答案: 有时我也陷入了类似情况。 因此,根据redux docs ,更新嵌套对象的方式是:- 但是由于数组处于状态,这会使您的工作更加困难。 因此,有两种方法可以执行此操作。 第一种方式(困难的方式) 自己创建一个新对象并

  • 问题内容: 有什么快速(好看的)方法可以从Java中的数组中删除元素? 问题答案: 你可以使用的。

  • 问题内容: 我有一个原始类型数组,我想从中删除指定索引处的元素。正确而有效的方法是什么? 我正在寻找以下面提到的方式删除元素 但是上述方法看起来只能与Object一起使用,而不能与原语一起使用。 还有其他选择吗?我不能使用任何第三方/附加库 问题答案: 您需要创建一个新数组并复制元素。例如这样的事情: 注意:以上尚未经过测试/调试。 您也可以使用for循环进行复制,但在这种情况下应更快。 该方法最

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大

  • 问题内容: 有没有一种简单的方法可以使用PHP从数组中删除元素,从而不再包含该元素? 我以为将它设置为可以实现,但是显然不起作用。 问题答案: 有多种删除数组元素的方法,其中某些方法对某些特定任务比其他任务更有用。 如果只想删除一个数组元素,则可以使用或。 另外,如果您具有值并且不知道要删除元素的键,则可以使用该键来获取键。 请注意,使用数组键时不会更改/重新索引。如果要重新索引键,则可以使用它,