난 그냥 경험했던 나는 여전히 대해 생각하고 무언가에 대한 그냥 빨리 질문에 $ 이유 :MongoDB를 : ObjectId가 배열
mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ { "$oid" : "53f1f09f2cdcc8f339e5efa2"} , { "$oid" : "5409ae2e2cdc31c5aa0ce0a5"}]}});
0
mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ ObjectId("53f1f09f2cdcc8f339e5efa2") , ObjectId("5409ae2e2cdc31c5aa0ce0a5")]}});
2
나는 $ oid와 ObjectId 철자 형식이 모두 MongoDB와 정확히 동일하다고 생각했습니다. 누구든지 왜 첫 번째 쿼리 반환 0 결과 및 두 번째 반환하는 2 (올바른 대답) 알고 있습니까?
또한 MongoDB Java 드라이버를 사용하여 MongoDB와 상호 작용하는 Morphia 프레임 워크를 사용하고 있습니다. 나는이 코드 줄을 실행하여 _ID되지 않은 분야에 걸쳐하며 Object 배열 연산자에 $로 검색하여 문제가 존재한다는 것을 깨달았다 :
List<ObjectId> fParams = new ArrayList<ObjectId>();
fParams.add(...);
Query<Ticket> query = genericDAO.createQuery();
query.field("idReferenceList").in(fParams);
result = genericDAO.find(query).asList();
미리 주셔서 대단히 감사합니다.
감사합니다,
- 루이스 CAPPA
genericDAO.find (쿼리) .asList(); //이 작업을 수행하고 확인할 수 있습니까? ? Wjat은 this.createQuery (필터)에서 사용중인 필터입니다. – BatScream
죄송합니다. 오타가 잘못되었습니다. 이 'createQuery'메소드는 fParams리스트로 필터링하여 Query를 작성하는 내부 메소드입니다. 즉, genericDAO.Find (this.createQuery (filter))는 genericDAO.find (query)와 동일합니다. 미안합니다. – lcappa