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

Permintaan mongodb data pegas mengonversi String ke ObjectId secara otomatis

Bagi saya masalahnya dapat dijelaskan seperti ini:jika Anda menggunakan String di kelas Anda sebagai pengganti ObjectId, jika Anda ingin menggunakan id itu sebagai referensi (tanpa dbrefs) di dokumen lain (dan dokumen yang disematkan), mereka didorong sebagai String (tidak apa-apa karena mereka adalah String). Tidak apa-apa karena data pegas dapat memetakannya lagi ke objectid, tetapi tidak apa-apa jika Anda melakukan kueri seperti yang saya sebutkan; bidang dikonversi ke objectid dalam perbandingan (operator $ne dalam kasus ini) tetapi dianggap sebagai string dalam dokumen yang disematkan. Jadi, sebagai penutup, menurut saya operator $ne dalam hal ini harus mempertimbangkan bidang tersebut sebagai String.

Solusi saya adalah menulis konverter khusus untuk menyimpan String sebagai objectid dalam dokumen di mana id adalah referensi

public class VoteWriteConverter implements Converter<Vote, DBObject> {

  @Override
  public DBObject convert(Vote vote) {
    DBObject dbo = new BasicDBObject();
    dbo.put("userid", new ObjectId(vote.getUserid()));
    dbo.put("value", vote.getValue());
    return dbo;
  }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Buat grafik d3.js dari data di server mongodb

  2. Apa cara yang benar untuk Mengindeks di MongoDB ketika ada kombinasi besar bidang?

  3. Tugas menyapu Heroku konstanta yang tidak diinisialisasi untuk model MongoMapper

  4. Bagaimana cara memeriksa apakah $addToSet Mongo adalah duplikat atau tidak

  5. Cara mengembalikan beberapa nilai menggunakan Go Mongo Distinct