删除mongodb中的记录

时间:2012-09-23 20:23:09

标签: java mongodb mongodb-java mongodb-query

我有这样的系列。

      System
      {
           System_id: 100,

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

我需要使用java api删除tenant_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: ...
              } ]
              }

2 个答案:

答案 0 :(得分:3)

由于您没有删除整个文档,因此需要使用$pull运算符而非update调用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);

答案 1 :(得分:0)

尝试这样的事情:

 { $pull : { system_type : {Tenant_Id: 1} } }