有 Java 编程相关的问题?

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

java如何在另一个嵌入对象(已嵌入对象)中创建嵌入对象的查询?

我在一个集合中添加了一个嵌入对象。该对象如下所示

{ "_id" : ObjectId("506d3046a4e89e856eace0cc"),
    "name": "new"
    "menuList":[{
        "name":"dssdfDS",
        "des":"dsfsdf",
        "_id" : ObjectId("506d3046a4d89e856eace0cc")
    }]
}

我已经创建了BasicDBObject查询,将“menuList”推送到的“name”:“new”,我已经成功地完成了这项工作,现在我想将menuList1附加到menuList

{ "_id" : ObjectId("506d3046a4e89e856eace0cc"),
    "name": "new"
    "menuList":[{
        "name":"dssdfDS",
        "des":"dsfsdf",
        "_id" : ObjectId("506d3046a4d89e856eace0cc")
        "menuList1":[{
            "name":"dssdfDS",
            "des":"dsfsdf",
            "_id" : ObjectId("506d3046a4d89e856eace0cc")
        }]
    }]
}

如何通过在菜单列表内按菜单列表1来进行基本CDB对象查询以更新菜单列表


共 (1) 个答案

  1. # 1 楼答案

    下面的查询可以做到这一点

      BasicDBObject query= new BasicDBObject("_id", ObjectId("506d3046a4e89e856eace0cc"));
      query.append("menuList._id", ObjectId("506d3046a4d89e856eace0cc"));
    
      BasicDBObject update = new BasicDBObject();
      update.append("menuList.$.menuList1", menuList1Objects);
    
      BasicDBObject updateCommand = new BasicDBObject("$push", update);
    
      db.collection.update(query,updateCommand);