MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Morphia List>> return Embedded element bukan DBObject pada operasi find

Morphia melihat Peta sebagai referensi DB ke dokumen lain daripada melihatnya sebagai kelas yang disematkan dan diperlakukan sebagai dokumen. Solusinya adalah dengan membubuhi keterangan pada Peta @Embedded, tetapi ini tidak mungkin karena Anda tidak dapat mengedit kelas Peta.

Ada cara untuk mencapai sesuatu yang mirip dengan apa yang Anda coba dengan membuat kelas lain dan mendefinisikan Peta sebagai properti kelas ini dan membubuhi keterangan sebagai @Embedded.

Ubah kelas Temp:

public class Temp {
    @Id String _id;

    @Embedded // CHANGE HERE
    List<MapProxy> strings; // CHANGE HERE

    public Temp(){
        strings=new LinkedList<MapProxy>(); // CHANGE HERE
    }

    public static void main(String...args) throws UnknownHostException, MongoException{
        Mongo mongo=null;
        Morphia morphia=null;
        Datastore ds=null;
        mongo = new Mongo();
        morphia = new Morphia();
        morphia.map(Temp.class);
        ds = morphia.createDatastore(mongo, "test2");
        Temp t = new Temp();
        t._id ="hi";      
        MapProxy mp = new MapProxy(); // CHANGE HERE    
        mp.m.put("Hi","1"); // CHANGE HERE
        mp.m.put("Hi2",2); // CHANGE HERE
        t.strings.add(mp); // CHANGE HERE
        ds.save(t);
        t=ds.get(t);
        ds.ensureIndexes();
    }
}

dan buat kelas baru:

@Embedded
public class MapProxy {
    public Map<String,Object> m = new HashMap<String, Object>();

}

Saya telah menandai perubahan yang telah saya buat.

Struktur yang dihasilkan adalah seperti ini:

{
    "_id" : "hi",
    "className" : "YOUR CLASS NAME HERE",
    "strings" : 
                [ { 
                     "m" : 
                            { 
                                "Hi" : "1" , 
                                "Hi2" : 2
                            } 
                } ]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Mengamankan Server ClusterControl

  2. Merujuk seluruh dokumen di MongoDB Aggregation Pipeline

  3. Perbarui array bersarang di Meteor

  4. SCUMM:Infrastruktur Pemantauan Database Berbasis Agen di ClusterControl

  5. Bisakah saya mengurangi teks di mongodb?