MongoDB için çok yeniyim ve Java sürücüsü ile birlikte kullanıyorum. Son satırı Ben ne yapmak istediğinizi gösteren özel ilgi konusu olanDizideki alt dokümanı DBObject (ler) olarak al
{ "_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" }
: Bu belge yapıya sahiptir. Her belge bir odadır ve bir alt belgeler dizisi olan bir değere karşılık gelen "ışıklar" anahtarına sahip olabilir. Modelleme açısından, her birinde 0-n ışığı olan 0-n odaya sahip bir evim var. Java'da yapmak istediğim, bir parametre olarak odanın adını almak ve ışıklar dizisindeki alt-belgelere karşılık gelen bir DBObject koleksiyonunu döndürmek - örneğin, "bana odadaki tüm ışıkları 'mutfak' için getir” .
Şimdiye kadar, TDD tarzında kademeli geçmeden, ben bu sorguyu inşa ettik.
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;
}
bu bana geçmek oda adı için tüm oda belgeyi almak için gidiyor fark ı' Buradan devam etmenin en iyi yolunun, istediğimi elde etmesini sağlamak için biraz sıkışmıştım. Basit bir sorguyla mümkün olan şey mi yoksa diziyi geri almam ve bunları kod içinde yinelemeli, elemanları DBObject olarak mı döküyorum? Ayrıca amacım için daha iyi bir belge yapısı için önerilere de açığım - bu yapıyla hiçbir şekilde evli değilim.
Bir bakış açısı için, açıklayıcı analojiler açısından yardımcı oluyorsa, SQL ve geleneksel ilişkisel veritabanlarında oldukça iyiyim. Ayrıca, MongoDB terminolojisini keserken, lütfen beni düzeltin. Şimdiden teşekkürler.
Teşekkür:
docClazz
bir kez oluşturduktan şey! Eve geldiğimde daha ayrıntılı bir bakış alacağım (işte bu kod). –QueryBuilder'ın akıcı arayüz görünümünü seviyorum ve Morphia çok güçlü görünüyor. Sanırım ne yaptığımı bildiğim kadar büyük olasılıkla QueryBuilder ve sonra Morphia'ya ilerleyene kadar kod örnekleminizde yaklaşmaya devam edeceğim. Ben her zaman "eski moda yolu" tam olarak anlamak ve kısayolu almadan önce kısayol ne olduğunu biliyorum. –
DBObject'e BasicDBList veremediğinizden bu işe yaramıyor. – shreks7