簡體   English   中英

如何使用Java在mongodb中重復地僅添加嵌入式字段?

[英]How to add only embedded fields repetitively in mongodb using Java?

鑒於JSON:

{
    "_id" : 2,
    "Act_Name" : "prashanth",
    "Act_Alias" : "H C",
    "Group_Account_Name" : "Prashan",
    "OpeningBalance" : 10000,
    "Dr_Cr" : 10000,
    "Is_Reserved" : true,
    "Is_Group_Act" : false,
    "Contact_Name" : "Prashanth",
    "Contact_Address" : "Bangalore",
    "Cr_Limit" : 2000,
    "isDeleted" : true,
    "Cr_Days" : {
        "BillwiseTracking" : {
            "Reference_Number" : 123,
            "Reference_Date" : null,
            "Due_Date" : null,
            "Amount" : 12334,
            "Ref_Dr_Cr" : 12
        }
    }
}

我只想重復添加字段:

"Reference_Number" : 123,
"Reference_Date" : null,
"Due_Date" : null,
"Amount" : 12334,
"Ref_Dr_Cr" : 12 

我的代碼如下。

BasicDBObject billwiseTracking = new BasicDBObject();
billwiseTracking.put("Reference_Number",referenceNumber);
billwiseTracking.put("Reference_Date", referenceDate);
billwiseTracking.put("Due_Date", dueDate);
billwiseTracking.put("Amount", amount);
billwiseTracking.put("Ref_Dr_Cr", refDrCr);

BasicDBObject updateObj = new BasicDBObject("BillwiseTracking", billwiseTracking);

accountHeads.update(findQuery, new BasicDBObject("$set", updateObj));

我不太了解您的問題,但是如果您想追加

第一

“ Cr_Days”下的“ BillwiseTracking”對象,則結構應如下所示

"Cr_Days" :
 {
        "BillwiseTracking" :
      [ 
        {
            "Reference_Number" : 123,
            "Reference_Date" : null,
            "Due_Date" : null,
            "Amount" : 12334,
            "Ref_Dr_Cr" : 12
        },
        {
            "Reference_Number" : 145,
            "Reference_Date" : null,
            "Due_Date" : null,
            "Amount" : 12355,
            "Ref_Dr_Cr" : 13
        }
    ]
  }  

這意味着它應該是數組元素,並且每次必須附加“ BillwiseTracking”值時

這可能是您的解決方案

   // query for append data ele.

        BasicDBObject updateQuery = new BasicDBObject();
        updateQuery.put( "_id", 2 );

  // object to appen 

       BasicDBObject billwiseTracking = new BasicDBObject();
       billwiseTracking.put("Reference_Number",referenceNumber);
       billwiseTracking.put("Reference_Date", referenceDate);
       billwiseTracking.put("Due_Date", dueDate);
       billwiseTracking.put("Amount", amount);
       billwiseTracking.put("Ref_Dr_Cr", refDrCr);

// push used to append data elements
       BasicDBObject updateCommand = new BasicDBObject();
        updateCommand.put( "$push", new BasicDBObject( "BillwiseTracking", billwiseTracking ) );
// final query execution
        WriteResult result = shoppingLists.update( updateQuery, updateCommand, true, true );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM