【问题标题】:delete a record in mongodb [duplicate]删除mongodb中的记录[重复]
【发布时间】:2012-09-23 20:23:08
【问题描述】:

我有一个这样的收藏。

      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: ...
              } ]
              }

【问题讨论】:

标签: java mongodb mongodb-java mongodb-query


【解决方案1】:

由于您没有删除整个文档,您需要使用$pull 运算符而不是remove 调用update

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);

【讨论】:

    【解决方案2】:

    试试这样的:

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

    【讨论】:

    • 你能帮我在java中怎么做
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2021-07-12
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多