繁体   English   中英

Springboot MongoDB 从对象数组中删除一个 object

[英]Springboot MongoDB delete an object from array of objects

我正在尝试从mongodb集合中的对象数组中删除 object 。 我已经遵循了 SO 的多个答案,但我无法让它发挥作用。

customer_idaddress_pin将从查询字符串传递。 我想从address_india中删除 object,其中address_pin与通过查询字符串传递的值匹配。

MongoDB collection object

{
   "_id":{
      "$oid":"61fa7de3b3de485b30403c56"
   },
   "customer_id":"c7e690cf-c8d9-4a7b-b146-ade742958452",
   "customer_addresses":{
      "address_india":[
         {
            "address_id":"ccc428bd-3e4d-49e5-8569-ebacb181ad1e",
            "address_pin":"MD0BuCQUxT",  // I've to remove this object          
            "address_type":"sales"
         },
         {
            "address_id":"ccc428bd-3e4d-49e5-8569-ebacb181asdf",
            "address_pin":"MD0BuCQUXy",            
            "address_type":"marketing"
         }
      ]
   },
   "create_timestamp":{
      "$numberLong":"1643806179346"
   },
   "modified_timestamp":{
      "$numberLong":"1643806179346"
   }
}

Controller

return new ResponseEntity<CustomerAddressResponse>(
                this.customerAddressService.deleteCustomerAddressById(customerId),
                HandleResponseHeader.getResponseHeaders(UUID), HttpStatus.OK);

ServiceImpl

@Override
    public CustomerAddressResponse deleteCustomerAddressById(String customerId)
            throws Exception {

        try {
            if (isValidUUID(customerId)) {
                Date now = new Date();
                Long dateStartTime = now.getTime();
                Stopwatch stopWatch = Stopwatch.createStarted();
                CustomerAddress customerAddress = customerAddressDao
                        .findByCustomerId(customerId);
                String pin = httpServletRequest.getParameter("address_pin")
                        .trim();
                
                Query query = new Query();
                query.addCriteria(Criteria.where("customer_id")
                        .is(customerId)
                        .and("customer_addresses.address_india")
                        .elemMatch(Criteria.where("address_pin").is(pin)));
                
                Update update = new Update();
                update.pull("customer_addresses.address_india", new Query().addCriteria(Criteria.where("address_pin").is(pin)));
                FindAndModifyOptions options = FindAndModifyOptions.options();
                options.returnNew(true);
                MongoTemplate template = null;
                template.findAndModify(query, update, options, CustomerAddress.class);
                }
            }
        }

我在template.findAndModify(query, update, options, CustomerAddress.class);收到java.lang.NullPointerException

如何从springbootmongodb中的对象数组中删除 object ?

这是您从 mongo js shell 对单个文档执行的操作,它可能会给您一些关于如何从 springboot 执行的想法:

db.collection.update(
 {
  "customer_id": "c7e690cf-c8d9-4a7b-b146-ade742958452"},
 {
   $pull: {
   "customer_addresses.address_india": {
   "address_pin": "MD0BuCQUxT"
   }
 }
})

操场

将 InsertMany 与 ArrayList 一起使用<object>在 mongoDB 中带有 springboot<div id="text_translate"><p> 是否可以将 insertMany 用于 ArrayList? 我实现了一个代码,但数据没有插入到集合中。</p><pre> ObjectId logId = new ObjectId(); LogFile data =logfileRepo.save(new LogFile(String.valueOf(logId), fileName, now)); ArrayList&lt;Object&gt; listdata = new ArrayList&lt;&gt;(); if (arr;= null) { //Iterating JSON array for (int i=0.i&lt;arr;size().i++){ //Adding each element of JSON array into ArrayList listdata.add(arr;get(i)): } } MongoClient mongo = new MongoClient(new MongoClientURI("mongodb+srv://rusiru.rus@cluster0.xemlu?mongodb.net/myFirstDatabase;retryWrites=true&amp;w=majority")). MongoDatabase database = mongo;getDatabase("LApp"). database.createCollection(String;valueOf(logId)). database.getCollection(String.valueOf(logId)).insertMany(listdata)</pre><p> 这里arr是一个 jsonArray。</p></div></object>

[英]Using InsertMany with ArrayList<Object> in mongoDB with springboot

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何编写查询以从 Springboot 中的 MongoDB 数据库中删除 object? 如何使用 SpringBoot 和 MongoDB 从 JSON 列表中删除 object 从 Java 中的 MongoDB 中的数组中删除 object 从数组中删除对象 在MongoDb Morphia中如何删除或替换数组对象 从 MongoDB 中删除“_class” - Springboot 如何删除从其他对象引用的对象? 如何从Java中的对象数组中删除元素 从对象数组中删除对象 将 InsertMany 与 ArrayList 一起使用<object>在 mongoDB 中带有 springboot<div id="text_translate"><p> 是否可以将 insertMany 用于 ArrayList? 我实现了一个代码,但数据没有插入到集合中。</p><pre> ObjectId logId = new ObjectId(); LogFile data =logfileRepo.save(new LogFile(String.valueOf(logId), fileName, now)); ArrayList&lt;Object&gt; listdata = new ArrayList&lt;&gt;(); if (arr;= null) { //Iterating JSON array for (int i=0.i&lt;arr;size().i++){ //Adding each element of JSON array into ArrayList listdata.add(arr;get(i)): } } MongoClient mongo = new MongoClient(new MongoClientURI("mongodb+srv://rusiru.rus@cluster0.xemlu?mongodb.net/myFirstDatabase;retryWrites=true&amp;w=majority")). MongoDatabase database = mongo;getDatabase("LApp"). database.createCollection(String;valueOf(logId)). database.getCollection(String.valueOf(logId)).insertMany(listdata)</pre><p> 这里arr是一个 jsonArray。</p></div></object>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM