Используется MongoDB Java Driver v3.12.2 .
Код извлекает значение из возвращенного курсора. Я использую более новые API, поэтому вы обнаружите некоторые различия в именах классов.
int transId = 410527376; // same as tollEvent.id
MongoCursor<Document> cursor = collection
.find(eq("pings.loc.transactionId", transId))
.projection(fields(elemMatch("pings.loc.transactionId"), excludeId()))
.iterator();
while (cursor.hasNext()) {
Document doc = cursor.next();
List<Document> pings = doc.get("pings", List.class);
Integer order = pings.get(0).getEmbedded(Arrays.asList("loc","order"), Double.class).intValue();
System.out.println(order.toString()); // prints 5233423
}
ПРИМЕЧАНИЯ:
Запрос с проекцией получает следующий вложенный документ из массива pings
:
"pings" : [
{
"upvote" : 575,
"loc" : {
"type" : "2dsphere",
"coordinates" : [ .... ],
"transactionId" : 410527376,
"order" : 5233423
},
...
}
]
Остающийся код с зацикливанием курсора предназначен для извлечения из него значения order
.
Ниже приведены импорт , используемый с фильтром и проекцией метода find
:
import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Projections.*;