Mongodb-Sammlung mit einer Reihe von Dokumenten mit der folgenden Struktur
{
"_id": ObjectId("52f4a5ed07b0f7106a9d5e4c"),
"FM_ID":"1253",
"passwd": ".aDoSkljf_h+6589q76w3rJK",
"Area": {
"0": {
"X": "53543500",
"Y": "14031500",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1a84"),
"ImageType": NumberInt(15)
},
"1": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1a87"),
"ImageType": NumberInt(2)
}
}
},
"1": {
"X": "53543500",
"Y": "14094572",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1aa8"),
"ImageType": NumberInt(15)
},
"1": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1aab"),
"ImageType": NumberInt(2)
},
"2": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1aae"),
"ImageType": NumberInt(0)
}
}
},
"2": {
"X": "53480464",
"Y": "14031500",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1acc"),
"ImageType": NumberInt(15)
}
}
}
möchte nur die ImageType = 2-Auflistung filtern
andQueryObj.add(new BasicDBObject("Area", new BasicDBObject("$elemMatch", new BasicDBObject("images", new BasicDBObject("$elemMatch", new BasicDBObject("ImageType", "2"))))));
Diese Abfrage funktioniert nicht. Wie filtern Sie die Wertdaten des inneren Objektelements ..?
Antworten:
0 für die Antwort № 11) Ein Problem, das ich sehe, ist, dass Sie Folgendes eingegeben haben:
BasicDBObject("imageType", "2")
Ich denke, es sollte sein:
BasicDBObject("ImageType", "2")
d.h. ImageType
sollte groß geschrieben werden.
2) Versuchen Sie dies auch.
BasicDBObject("ImageType", new Integer("2"))
Ich meine, Ihr ImageType ist NumberInt in MongoDB, sollten Sie also
Versuchen Sie Integer in Java. Derzeit suchen Sie nach dem String "2" und
nicht für die ganze Zahl 2.