Sadece yaşadıysanız ve ben hala düşünüyorum şey hakkında sadece hızlı bir soru ile giriş $ nedenleri:MongoDB: Bir Nesne Kimliği dizisi
mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ { "$oid" : "53f1f09f2cdcc8f339e5efa2"} , { "$oid" : "5409ae2e2cdc31c5aa0ce0a5"}]}});
mongos> db.tickets.count({ "idReferenceList" : { "$in" : [ ObjectId("53f1f09f2cdcc8f339e5efa2") , ObjectId("5409ae2e2cdc31c5aa0ce0a5")]}});
Ben MongoDB için tam olarak aynı nerede hem $ oid ve ObjectId yazım biçimlerini düşündüm. İlk sorgulamada neden sonuçların 0 ile sonuçlandığını ve ikincisinin 2'nin (doğru cevap) geri döndüğünü bilen var mı? Ayrıca, MongoDB ile etkileşim kurmak için MongoDB Java sürücüsünü kullanan Morphia framework'ü kullanıyorum. Ben bu kod satırları yürüterek _ID olmayan alanlar üzerinde ObjectIds dizilerde operatörü $ ile arayarak sorun var olduğu fark ettik:
List<ObjectId> fParams = new ArrayList<ObjectId>();
fParams.add(...);
Query<Ticket> query = genericDAO.createQuery();
query.field("idReferenceList").in(fParams);
result = genericDAO.find(query).asList();
önceden size çok teşekkür ederim.
Selamlar,
- Luis Cappa
genericDAO.find (sorgu) .asList(); // bunu yapabilir ve kontrol edebilir misin? ? Bu arada Wjat, this.createQuery (filtre) 'de kullandığınız filtredir. – BatScream
Özür dileriz, bu sadece bir yazım hatası oldu. Bu 'createQuery' yöntemi, fParams listesi tarafından filtrelenerek bir Sorgu oluşturan bir iç yöntemdir. Kısaca, genericDAO.Find (this.createQuery (filter)), jenericDAO.find (query) ile aynıdır. Bunun için üzgünüm. – lcappa