/ / пошук конкретного значення поля у внутрішньому під-документі під-документа до Mongo db за допомогою Java-java, mongodb

шукати значення конкретного поля у внутрішньому під-документі під документа до Mongo db за допомогою Java-java, mongodb

Колекція Монодбба містить ряд документів з наступною структурою

{
"_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)
}
}
}

хочете відфільтрувати тільки ImageType = 2 колекцію

andQueryObj.add(new BasicDBObject("Area", new BasicDBObject("$elemMatch", new BasicDBObject("images", new BasicDBObject("$elemMatch", new BasicDBObject("ImageType", "2"))))));

Цей запит не працює. як фільтрувати внутрішні елементи бази даних на основі даних ..?

Відповіді:

0 для відповіді № 1

1) Одне питання, яке я бачу, це те, що ви набрали:

BasicDBObject("imageType", "2")

Я думаю, це має бути:

BasicDBObject("ImageType", "2")

тобто ImageType слід капіталізувати.

2) Також спробуйте це.

BasicDBObject("ImageType", new Integer("2"))

Я маю на увазі, що ваш ImageType - це NumberInt в MongoDB, так що ви повинні
спробуйте Integer в Java. В даний час ви шукаєте String "2", і
не для цілого 2.