MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapytanie mongodb danych Spring automatycznie konwertuje String na ObjectId

Wydaje mi się, że problem można opisać tak:jeśli używasz String w swoich klasach zamiast ObjectId, jeśli chcesz używać tych identyfikatorów jako referencji (bez dbrefs) w innych dokumentach (i dokumentach osadzonych), są one wypychane jako String (jest ok, bo są to Stringi). Jest w porządku, ponieważ dane wiosenne mogą ponownie mapować je do obiektu objectid, ale nie jest w porządku, jeśli wykonasz zapytanie takie jak to, o którym wspomniałem; pole jest konwertowane na obiekt w porównaniu (w tym przypadku operator $ne), ale jest traktowane jako ciąg znaków w osadzonym dokumencie. Podsumowując, moim zdaniem operator $ne w tym przypadku powinien traktować pole jako String.

Moim rozwiązaniem było napisanie niestandardowego konwertera do przechowywania ciągu jako obiektu w dokumentach, w których identyfikator jest referencją

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. Jak pogrupować i wybrać dokument odpowiadający max w każdej grupie w MongoDB?

  2. Jak wepchnąć tablicę obiektów do tablicy w manguście za pomocą jednego wywołania?

  3. MongoDB:wstaw dokumenty z określonym identyfikatorem zamiast automatycznie generowanego ObjectID

  4. Jak przechowywać sesje w MongoDB z NodeJS?

  5. Meteor:nieoczekiwany kod wyjścia mongo null. Ponowne uruchamianie. Co to jest?