0

我有一个这样的集合。

      System
      {
           System_id: 100,

         system_type:
        {
             [ 
              { 
            Tenant_Id: 1, 
            Tenant_Info: "check", 
            Prop_Info: ...
              }, 
              { 
             Tenant_Id: 2, 
             Tenant_Info: "sucess", 
              Prop_Info: ...
              } ]
              }

我需要使用 java api 删除租户 ID 为 1 且 system_id 为 100 的唯一一个嵌入式文档。

我试图删除该文档。但是整个文档都被删除了。我只需要删除tenant_id 为1 的嵌入文档。

            DBCollection collection=db.getCollection("system");
    field.put("system_id",100);
    field.put("system_type.Tenant_id", 1);
    collection.remove(field);

请指导我如何删除它?我需要这样的输出。

            System
      {
           System_id: 100,

         system_type:
        {
             [ 
             { 
             Tenant_Id: 2, 
             Tenant_Info: "sucess", 
              Prop_Info: ...
              } ]
              }
4

2 回答 2

3

由于您没有删除整个文档,因此您需要update使用$pull操作员而不是remove

BasicDBObject query = new BasicDBObject(
    "System_Id", 100
);

BasicDBObject pull = new BasicDBObject(
    "$pull", new BasicDBObject(
        "system_type", new BasicDBObject(
            "Tenant_Id", 1
        )
    )
);

collection.update(query, pull);
于 2012-09-24T00:46:55.277 回答
0

尝试这样的事情:

 { $pull : { system_type : {Tenant_Id: 1} } }
于 2012-09-23T20:37:16.853 回答