MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग डेटा मोंगोडब मैपिंग डायनेमिक फील्ड

मुझे एक अचूक उपाय पता चला। उदाहरण के लिए मेरा प्रोजेक्ट लें:

@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;
    }
}

data घोषित करें Object . के प्रकार के रूप में फ़ील्ड , इसके लिए 3 तरह का सेटर लागू करें।

ये रहे टेस्ट केस:

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

और परिणाम:

{
        "_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. MongoDB में डेटा वर्जनिंग को लागू करने के तरीके

  2. नेवला के साथ केवल दिनांक भाग को कैसे सहेजा जाए, ISODate प्रारूप में नहीं

  3. mongoexport में निर्यात किए गए MongoDB दस्तावेज़ों को कैसे सुंदर बनाएं?

  4. MongoDB $text search में कैसे करें और नहीं

  5. बॉडी, नेवला/मोंगोडब में दस्तावेज़ प्रदान करके कई दस्तावेज़ों को अपडेट करें