有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从mongo数组中删除嵌套文档

这是我的mongo文档:

{
    "_id" : ObjectId("51f22f6784aefaa97d7e533e"),
    "group_name" : "demo",
    "privileges" : [
        "User Group",
        "Profile Images",
        "Advertisement"
    ],
    "users" : [
        {
            "full_name" : "aap",
            "password" : "as",
            "status" : "Active",
            "user_name" : "as"
        },
        {
            "full_name" : "b",
            "user_name" : "b",
            "password" : "b",
            "status" : "Active"
        },
        {
            "full_name" : "prashant",
            "user_name" : "pt123",
            "status" : "Active"
        }
    ]
}

我想查找所有具有“组名称”的记录:“演示”删除具有“用户名”的特定记录:“pt123”形成用户数组。 我试过了

 db.users.update({"group_name":"demo"}, {$pull:{"users.user_name":"pt123"}})

但是没有效果。我缺少什么? 请帮忙 我的java代码是

BasicDBObject del = new BasicDBObject("group_name", z);
del.put("users.user_name", x);
BasicDBObject delquery=new BasicDBObject("$match",del);
con.remove(delquery);

共 (2) 个答案

  1. # 1 楼答案

    以下是您的工作查询:

    db.users.update({"group_name":"demo"}, {$pull: {"users":{"user_name":"pt123"}}})
    
  2. # 2 楼答案

          BasicDBObject sq = new BasicDBObject("group_name", z);
          BasicDBObject idoc=new BasicDBObject("user_name",x);
          BasicDBObject odoc =new BasicDBObject("users",idoc);
          BasicDBObject delq=new BasicDBObject("$pull",odoc);
          con.coll.update(sq, delq);