MongoDB: $mit einer ObjectId array

Nur eine kurze Frage, über sowas habe ich gerade erlebt, und ich bin immer noch darüber nachzudenken, warum:

mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ { "$oid" : "53f1f09f2cdcc8f339e5efa2"} , { "$oid" : "5409ae2e2cdc31c5aa0ce0a5"}]}});

0

mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ ObjectId("53f1f09f2cdcc8f339e5efa2") , ObjectId("5409ae2e2cdc31c5aa0ce0a5")]}});

2

Dachte ich, dass sowohl $ObjectId oid und Rechtschreibung-Formate, bei denen genau das gleiche für MongoDB. Weiß jemand, warum mit der ersten Abfrage return 0 Ergebnisse und mit der zweiten ist die Rückkehr 2 (die richtige Antwort)?

Darüber hinaus bin ich mit Morphia-framework verwendet MongoDB-Java-Treiber, um die Interaktion mit MongoDB. Ich habe realisiert, dass es ein problem durch die Suche mit dem $operator in ObjectIds arrays über Felder, die nicht _id nach ausführen dieses code-Zeilen:

List< ObjectId > fParams = new ArrayList< ObjectId >();

fParams.add(...);

Query<Ticket> query = genericDAO.createQuery();

query.field("idReferenceList").in(fParams);

result = genericDAO.find(query).asList();

Vielen Dank im Voraus.

Grüße,

  • Luis Cappa
  • genericDAO.find(query).asList(); // kannst du tun und lassen. ? Wjat ist der filter, die Sie verwenden, in diesem.createQuery(filter), durch die Art und Weise.
  • Sorry, es war nur ein typo Fehler. Diese "createQuery-Methode" ist eine interne Methode, die eine Abfrage erstellt, die durch die Filterung durch die fParams Liste. In kurzen Worten, genericDAO.Finden(dies.createQuery(filter)) ist das gleiche wie genericDAO.find(query). Tut mir Leid, dass.
InformationsquelleAutor lcappa | 2014-09-10
Schreibe einen Kommentar