MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Spring data mongodb заявка автоматично преобразува String в ObjectId

Струва ми се, че проблемът може да се опише по следния начин:ако използвате String във вашите класове вместо ObjectId, ако искате да използвате тези идентификатори като препратки (без dbrefs) в други документи (и вградени документи), те се натискат като низ (добре е, защото те са низове). Добре е, защото данните от пролетта могат да ги картографират отново към objectid, но не е добре, ако направите заявка като тази, която споменах; полето се преобразува в objectid при сравнението (операторът $ne в този случай), но се счита за низ във вградения документ. И така, за да приключим, според мен операторът $ne в този случай трябва да счита полето за низ.

Моето решение беше да напиша персонализиран конвертор за съхраняване на низа като objectid в документите, където идентификаторът е препратка

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. Рендирайте изображение, съхранено в Mongo (GridFS) с Node + Jade + Express

  2. Защо не се препоръчва използването на съхранени функции от страна на сървъра в MongoDB?

  3. Възможност за агрегиране на MongoDB

  4. В MongoDB, как да се извърши заявка въз основа на това дали едно поле на низ съдържа друго

  5. MongoDB - твърде много данни за sort() без грешка в индекса