/ / cerca il valore del campo particolare nel sub documento interno del sottodocumento in Mongo db usando Java - java, mongodb

cerca il valore del campo particolare nel sub documento interno del sottodocumento in Mongo db usando Java - java, mongodb

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 № 1

1) 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.