Raccolta Mongodb contenente un numero di documenti con la seguente struttura
{
"_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)
}
}
}
desidera filtrare solo la raccolta ImageType = 2
andQueryObj.add(new BasicDBObject("Area", new BasicDBObject("$elemMatch", new BasicDBObject("images", new BasicDBObject("$elemMatch", new BasicDBObject("ImageType", "2"))))));
Questa query non funziona. come filtrare i dati basati sul valore dell'elemento interno dell'oggetto ..?
risposte:
0 per risposta № 11) Un problema che vedo è che hai digitato:
BasicDBObject("imageType", "2")
Penso che dovrebbe essere:
BasicDBObject("ImageType", "2")
cioè ImageType
dovrebbe essere capitalizzato
2) Prova anche questo.
BasicDBObject("ImageType", new Integer("2"))
Voglio dire, il tuo ImageType è NumberInt in MongoDB, quindi dovresti
prova Intero in Java. Attualmente stai cercando la stringa "2", e
non per l'intero 2.