MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nâng cấp MongoTemplate - cách dễ dàng để thực hiện Cập nhật từ pojo (người dùng nào đã chỉnh sửa)?

Tôi đã tìm thấy một giải pháp khá tốt cho câu hỏi này

//make a new description here
Description d = new Description();
d.setCode("no");
d.setName("norwegian");
d.setNorwegian("norwegian");
d.setEnglish("english");

//build query
Query query = new Query(Criteria.where("code").is(description.getCode()));

//build update
DBObject dbDoc = new BasicDBObject();
mongoTemplate.getConverter().write(d, dbDoc); //it is the one spring use for convertions.
Update update = Update.fromDBObject(dbDoc);

//run it!
mongoTemplate.upsert(query, update, "descriptions");

Xin lưu ý rằng Update.fromDBObject trả về một đối tượng cập nhật với tất cả các trường trong dbDoc. Nếu bạn chỉ muốn cập nhật các trường không rỗng, bạn nên viết mã một phương pháp mới để loại trừ các trường rỗng.

Ví dụ:front-end đăng một tài liệu như dưới đây:

//make a new description here
Description d = new Description();
d.setCode("no");
d.setEnglish("norwegian");

Chúng tôi chỉ cần cập nhật trường 'ngôn ngữ':

//return Update object
public static Update fromDBObjectExcludeNullFields(DBObject object) {
    Update update = new Update();       
    for (String key : object.keySet()) {
        Object value = object.get(key);
        if(value!=null){
            update.set(key, value);
        }
    }
    return update;
}

//build udpate
Update update = fromDBObjectExcludeNullFields(dbDoc);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để truy xuất datetiime từ mongodb? Bằng cách so sánh dữ liệu với jDateChosser Java

  2. Giới hạn số lượng giá trị trong một trường bằng cách sử dụng MongoDB

  3. Mongodb:Chuyển đổi không được hỗ trợ từ mảng sang objectId trong $ convert không có giá trị onError

  4. Tự động hóa và quản lý MongoDB trong đám mây

  5. tìm trong tài liệu BSON với trình điều khiển MongoDB C ++