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

trường động lập bản đồ dữ liệu mùa xuân mongodb

Tôi đã tìm ra một giải pháp hoàn hảo. lấy ví dụ dự án của tôi:

@Data
@Document(collection = "logs")
public class Log {
    @Id
    private String id;
    private Object data;

    // data field can be a string
    public void setData(String str) {
        data = str;
    }
    // data field can be a {}
    public void setData(JsonObject jsonObject) {
        data = new BasicDBObject(jsonObject.getMap());
    }
    // data can be a []
    public void setData(JsonArray jsonArray) {
        BasicDBList list = new BasicDBList();
        list.addAll(jsonArray.getList());
        data = list;
    }
}

khai báo dữ liệu data trường dưới dạng loại Object , triển khai 3 loại setter cho nó.

Đây là trường hợp thử nghiệm:

@RunWith(SpringRunner.class)
@SpringBootTest
public class LogRepositoryTest {

    @Autowired
    private LogRepository logRepository;

    @Test
    public void test() {
        Log strLog = new Log();
        strLog.setData("string here");
        logRepository.save(strLog);
        Log objLog = new Log();
        objLog.setData(new JsonObject().put("key", "value").put("obj", new JsonObject()));
        logRepository.save(objLog);
        Log aryLog = new Log();
        aryLog.setData(new JsonArray().add("a").add("b").add("c"));
        logRepository.save(aryLog);
    }
}

Và kết quả:

{
        "_id" : ObjectId("5a09fa46a15b065268a0a157"),
        "_class" : "ltd.linkcon.spider.domain.Log",
        "data" : "string here"
}
{
        "_id" : ObjectId("5a09fa46a15b065268a0a158"),
        "_class" : "ltd.linkcon.spider.domain.Log",
        "data" : {
                "key" : "value",
                "obj" : [ ]
        }
}
{
        "_id" : ObjectId("5a09fa46a15b065268a0a159"),
        "_class" : "ltd.linkcon.spider.domain.Log",
        "data" : [
                "a",
                "b",
                "c"
        ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hiển thị lỗi trên php

  2. Muốn sử dụng DB cho phép ghi nhật ký trong hệ thống 32 bit-MongoDB

  3. Làm thế nào để khôi phục Mongo có chọn lọc?

  4. PHP MongoDB cập nhật nhiều tài liệu bằng cách sử dụng $ in / $ hoặc

  5. Xóa đối tượng khỏi mảng lồng nhau theo nhiều tiêu chí