Я очень новичок в MongoDB, и я использую его вместе с драйвером Java. У меня есть этот документ структуру:Получить поддокумент в массиве как DBObject (ы)
{ "_id" : ObjectId("4f7d2ba6fd5a306d82687d48"), "room" : "Den" }
{ "_id" : ObjectId("4f7d2baafd5a306d82687d49"), "room" : "Foyer" }
{ "_id" : ObjectId("4f7d2fdcfd5a306d82687d4a"), "room" : "Master Bedroom" }
{ "_id" : ObjectId("4f7d301afd5a306d82687d4b"), "room" : "Guest Bedroom" }
{ "_id" : ObjectId("4f7d2b98fd5a306d82687d47"), "code" : "A", "lights" : [ { "name" : "Overhead", "code" : "1" } ], "room" : "Kitchen" }
Если последняя строка представляет особый интерес, иллюстрирующий то, что я хочу сделать. Каждый документ является комнатой и может иметь ключ «огни», соответствующий значению, представляющему собой массив поддокументов. С точки зрения моделирования у меня есть дом, в котором есть 0-n номеров, каждый из которых имеет в нем 0-n огней. То, что я хочу сделать на Java, - это имя комнаты в качестве параметра и вернуть коллекцию DBObject, соответствующую поддокументам в массиве огней, - «дайте мне все огни для комнаты« кухня », например ,
До сих пор идет по нарастающей в стиле TDD, я построил этот запрос:.
public static final String ROOM_KEY = "room";
public static final String EQUALS_KEY = "$eq";
private BasicDBObject buildRoomNameQuery(String roomName) {
BasicDBObject myQuery = new BasicDBObject();
myQuery.put(ROOM_KEY, new BasicDBObject(EQUALS_KEY, roomName));
return myQuery;
}
Я понимаю, что это собирается получить меня весь документ номера для имени номер я прохожу в I» m немного застрял на том, что лучший способ исходить отсюда - получить то, что я хочу. Является ли то, что я делаю, даже возможно с помощью простого запроса, или мне нужно будет получить массив и перебрать его в код, наведя элементы как DBObject? Я также открыт для предложений по лучшей структуре документов для моей цели - я не женат на этой структуре любыми способами.
Для некоторой точки зрения, я довольно хорошо разбираюсь в SQL и традиционных реляционных базах данных, если это помогает с точки зрения объяснительных аналогов. Кроме того, если я разучиваю терминологию MongoDB, пожалуйста, исправьте меня. Заранее спасибо.
Спасибо за указатели! Посмотрите более подробно, когда я вернусь домой (вот где этот код). –
Мне нравится свободный интерфейс QueryBuilder, и Morphia выглядит очень мощным. Я думаю, что я буду придерживаться подхода в вашем примере кода, пока не узнаю, что я делаю, а затем, вероятно, перейду в QueryBuilder, а затем в Morphia. Мне всегда нравится понимать это «старомодным способом» и знать, что я сокращаю, прежде чем принять ярлык. –
Это не работает, поскольку вы не можете отбросить BasicDBList в DBObject. – shreks7